From dba849136164a1823941ce7087831d6c6fb30b54 Mon Sep 17 00:00:00 2001 From: Nitin Goyal Date: Wed, 26 Jun 2024 21:55:01 +0530 Subject: [PATCH 1/2] bundle: update ibm odf version Signed-off-by: Nitin Goyal --- ...-operator-manager-config_v1_configmap.yaml | 4 ++-- catalog/ibm.yaml | 20 +++++++++---------- catalog/index.yaml | 6 +++--- config/manager/manager.env | 4 ++-- hack/make-bundle-vars.mk | 6 +++--- 5 files changed, 20 insertions(+), 20 deletions(-) diff --git a/bundle/manifests/odf-operator-manager-config_v1_configmap.yaml b/bundle/manifests/odf-operator-manager-config_v1_configmap.yaml index ff0e46108..cc6592d9f 100644 --- a/bundle/manifests/odf-operator-manager-config_v1_configmap.yaml +++ b/bundle/manifests/odf-operator-manager-config_v1_configmap.yaml @@ -8,10 +8,10 @@ data: CSIADDONS_SUBSCRIPTION_STARTINGCSV: csi-addons.v0.8.0 IBM_SUBSCRIPTION_CATALOGSOURCE: odf-catalogsource IBM_SUBSCRIPTION_CATALOGSOURCE_NAMESPACE: openshift-marketplace - IBM_SUBSCRIPTION_CHANNEL: stable-v1.4 + IBM_SUBSCRIPTION_CHANNEL: stable-v1.5 IBM_SUBSCRIPTION_NAME: ibm-storage-odf-operator IBM_SUBSCRIPTION_PACKAGE: ibm-storage-odf-operator - IBM_SUBSCRIPTION_STARTINGCSV: ibm-storage-odf-operator.v1.4.1 + IBM_SUBSCRIPTION_STARTINGCSV: ibm-storage-odf-operator.v1.5.0 NOOBAA_SUBSCRIPTION_CATALOGSOURCE: odf-catalogsource NOOBAA_SUBSCRIPTION_CATALOGSOURCE_NAMESPACE: openshift-marketplace NOOBAA_SUBSCRIPTION_CHANNEL: alpha diff --git a/catalog/ibm.yaml b/catalog/ibm.yaml index 0de9def9f..73fdb5931 100644 --- a/catalog/ibm.yaml +++ b/catalog/ibm.yaml @@ -1,6 +1,6 @@ --- -image: quay.io/ibmodffs/ibm-storage-odf-operator-bundle:1.4.1 -name: ibm-storage-odf-operator.v1.4.1 +image: quay.io/ibmodffs/ibm-storage-odf-operator-bundle:1.5.0 +name: ibm-storage-odf-operator.v1.5.0 package: ibm-storage-odf-operator properties: - type: olm.gvk @@ -11,14 +11,14 @@ properties: - type: olm.package value: packageName: ibm-storage-odf-operator - version: 1.4.1 + version: 1.5.0 - type: olm.package.required value: packageName: ibm-block-csi-operator - versionRange: '>=1.11.1' + versionRange: '>=1.11.3' - type: olm.bundle.object value: - data: eyJhcGlWZXJzaW9uIjoidjEiLCJkYXRhIjp7ImNzaS5pYm0uY29tX3YxX2libWJsb2NrY3NpX2NyLnlhbWwiOiJhcGlWZXJzaW9uOiBjc2kuaWJtLmNvbS92MVxua2luZDogSUJNQmxvY2tDU0lcbm1ldGFkYXRhOlxuICBuYW1lOiBpYm0tYmxvY2stY3NpXG4gIG5hbWVzcGFjZTogZGVmYXVsdFxuICBsYWJlbHM6XG4gICAgYXBwLmt1YmVybmV0ZXMuaW8vbmFtZTogaWJtLWJsb2NrLWNzaVxuICAgIGFwcC5rdWJlcm5ldGVzLmlvL2luc3RhbmNlOiBpYm0tYmxvY2stY3NpXG4gICAgYXBwLmt1YmVybmV0ZXMuaW8vbWFuYWdlZC1ieTogaWJtLWJsb2NrLWNzaS1vcGVyYXRvclxuICAgIHJlbGVhc2U6IHYxLjExLjFcbnNwZWM6XG4gICMgY29udHJvbGxlciBpcyBhIHN0YXRlZnVsU2V0IHdpdGggaWJtLWJsb2NrLWNzaS1jb250cm9sbGVyIGNvbnRhaW5lclxuICAjIGFuZCBjc2ktcHJvdmlzaW9uZXIsIGNzaS1hdHRhY2hlciwgY3NpLXNuYXBzaG90dGVyIGFuZCBsaXZlbmVzc3Byb2JlIHNpZGVjYXJzLlxuICBjb250cm9sbGVyOlxuICAgIHJlcG9zaXRvcnk6IHF1YXkuaW8vaWJtY3NpYmxvY2svaWJtLWJsb2NrLWNzaS1kcml2ZXItY29udHJvbGxlclxuICAgIHRhZzogXCIxLjExLjBcIlxuICAgIGltYWdlUHVsbFBvbGljeTogSWZOb3RQcmVzZW50XG4gICAgYWZmaW5pdHk6XG4gICAgICBub2RlQWZmaW5pdHk6XG4gICAgICAgIHJlcXVpcmVkRHVyaW5nU2NoZWR1bGluZ0lnbm9yZWREdXJpbmdFeGVjdXRpb246XG4gICAgICAgICAgbm9kZVNlbGVjdG9yVGVybXM6XG4gICAgICAgICAgICAtIG1hdGNoRXhwcmVzc2lvbnM6XG4gICAgICAgICAgICAgICAgLSBrZXk6IGt1YmVybmV0ZXMuaW8vYXJjaFxuICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IEluXG4gICAgICAgICAgICAgICAgICB2YWx1ZXM6XG4gICAgICAgICAgICAgICAgICAgIC0gYW1kNjRcbiAgICAgICAgICAgICAgICAgICAgLSBzMzkweFxuICAgICAgICAgICAgICAgICAgICAtIHBwYzY0bGVcblxuICAjIG5vZGUgaXMgYSBkYWVtb25TZXQgd2l0aCBpYm0tYmxvY2stY3NpLW5vZGUgY29udGFpbmVyXG4gICMgYW5kIGNzaS1ub2RlLWRyaXZlci1yZWdpc3RyYXIgYW5kIGxpdmVuZXNzcHJvYmUgc2lkZWNhcnMuXG4gIG5vZGU6XG4gICAgcmVwb3NpdG9yeTogcXVheS5pby9pYm1jc2libG9jay9pYm0tYmxvY2stY3NpLWRyaXZlci1ub2RlXG4gICAgdGFnOiBcIjEuMTEuMFwiXG4gICAgaW1hZ2VQdWxsUG9saWN5OiBJZk5vdFByZXNlbnRcbiAgICBhZmZpbml0eTpcbiAgICAgIG5vZGVBZmZpbml0eTpcbiAgICAgICAgcmVxdWlyZWREdXJpbmdTY2hlZHVsaW5nSWdub3JlZER1cmluZ0V4ZWN1dGlvbjpcbiAgICAgICAgICBub2RlU2VsZWN0b3JUZXJtczpcbiAgICAgICAgICAgIC0gbWF0Y2hFeHByZXNzaW9uczpcbiAgICAgICAgICAgICAgICAtIGtleToga3ViZXJuZXRlcy5pby9hcmNoXG4gICAgICAgICAgICAgICAgICBvcGVyYXRvcjogSW5cbiAgICAgICAgICAgICAgICAgIHZhbHVlczpcbiAgICAgICAgICAgICAgICAgICAgLSBhbWQ2NFxuICAgICAgICAgICAgICAgICAgICAtIHMzOTB4XG4gICAgICAgICAgICAgICAgICAgIC0gcHBjNjRsZVxuXG4jICAgIHRvbGVyYXRpb25zOlxuIyAgICAtIGVmZmVjdDogTm9TY2hlZHVsZVxuIyAgICAgIGtleTogbm9kZS1yb2xlLmt1YmVybmV0ZXMuaW8vbWFzdGVyXG4jICAgICAgb3BlcmF0b3I6IEV4aXN0c1xuXG4gIHNpZGVjYXJzOlxuICAtIG5hbWU6IGNzaS1ub2RlLWRyaXZlci1yZWdpc3RyYXJcbiAgICByZXBvc2l0b3J5OiBrOHMuZ2NyLmlvL3NpZy1zdG9yYWdlL2NzaS1ub2RlLWRyaXZlci1yZWdpc3RyYXJcbiAgICB0YWc6IFwidjIuNS4wXCJcbiAgICBpbWFnZVB1bGxQb2xpY3k6IElmTm90UHJlc2VudFxuICAtIG5hbWU6IGNzaS1wcm92aXNpb25lclxuICAgIHJlcG9zaXRvcnk6IGs4cy5nY3IuaW8vc2lnLXN0b3JhZ2UvY3NpLXByb3Zpc2lvbmVyXG4gICAgdGFnOiBcInYzLjEuMFwiXG4gICAgaW1hZ2VQdWxsUG9saWN5OiBJZk5vdFByZXNlbnRcbiAgLSBuYW1lOiBjc2ktYXR0YWNoZXJcbiAgICByZXBvc2l0b3J5OiBrOHMuZ2NyLmlvL3NpZy1zdG9yYWdlL2NzaS1hdHRhY2hlclxuICAgIHRhZzogXCJ2My40LjBcIlxuICAgIGltYWdlUHVsbFBvbGljeTogSWZOb3RQcmVzZW50XG4gIC0gbmFtZTogY3NpLXNuYXBzaG90dGVyXG4gICAgcmVwb3NpdG9yeTogazhzLmdjci5pby9zaWctc3RvcmFnZS9jc2ktc25hcHNob3R0ZXJcbiAgICB0YWc6IFwidjUuMC4xXCJcbiAgICBpbWFnZVB1bGxQb2xpY3k6IElmTm90UHJlc2VudFxuICAtIG5hbWU6IGNzaS1yZXNpemVyXG4gICAgcmVwb3NpdG9yeTogazhzLmdjci5pby9zaWctc3RvcmFnZS9jc2ktcmVzaXplclxuICAgIHRhZzogXCJ2MS40LjBcIlxuICAgIGltYWdlUHVsbFBvbGljeTogSWZOb3RQcmVzZW50XG4gIC0gbmFtZTogY3NpLWFkZG9ucy1yZXBsaWNhdG9yXG4gICAgcmVwb3NpdG9yeTogcXVheS5pby9pYm1jc2libG9jay9jc2ktYmxvY2stdm9sdW1lcmVwbGljYXRpb24tb3BlcmF0b3JcbiAgICB0YWc6IFwidjAuOS4wXCJcbiAgICBpbWFnZVB1bGxQb2xpY3k6IElmTm90UHJlc2VudFxuICAtIG5hbWU6IGNzaS12b2x1bWUtZ3JvdXBcbiAgICByZXBvc2l0b3J5OiBxdWF5LmlvL2libWNzaWJsb2NrL2NzaS12b2x1bWUtZ3JvdXAtb3BlcmF0b3JcbiAgICB0YWc6IFwidjAuOS4wXCJcbiAgICBpbWFnZVB1bGxQb2xpY3k6IElmTm90UHJlc2VudFxuICAtIG5hbWU6IGxpdmVuZXNzcHJvYmVcbiAgICByZXBvc2l0b3J5OiBrOHMuZ2NyLmlvL3NpZy1zdG9yYWdlL2xpdmVuZXNzcHJvYmVcbiAgICB0YWc6IFwidjIuNi4wXCJcbiAgICBpbWFnZVB1bGxQb2xpY3k6IElmTm90UHJlc2VudFxuXG4jICBoZWFsdGhQb3J0OiA5ODA4XG4jICBpbWFnZVB1bGxTZWNyZXRzOlxuIyAgLSBcInNlY3JldE5hbWVcIlxuIn0sImtpbmQiOiJDb25maWdNYXAiLCJtZXRhZGF0YSI6eyJuYW1lIjoiZmxhc2hzeXN0ZW0tY3NpLWNyIn19 + data: eyJhcGlWZXJzaW9uIjoidjEiLCJkYXRhIjp7ImNzaS5pYm0uY29tX3YxX2libWJsb2NrY3NpX2NyLnlhbWwiOiJhcGlWZXJzaW9uOiBjc2kuaWJtLmNvbS92MVxua2luZDogSUJNQmxvY2tDU0lcbm1ldGFkYXRhOlxuICBuYW1lOiBpYm0tYmxvY2stY3NpXG4gIG5hbWVzcGFjZTogZGVmYXVsdFxuICBsYWJlbHM6XG4gICAgYXBwLmt1YmVybmV0ZXMuaW8vbmFtZTogaWJtLWJsb2NrLWNzaVxuICAgIGFwcC5rdWJlcm5ldGVzLmlvL2luc3RhbmNlOiBpYm0tYmxvY2stY3NpXG4gICAgYXBwLmt1YmVybmV0ZXMuaW8vbWFuYWdlZC1ieTogaWJtLWJsb2NrLWNzaS1vcGVyYXRvclxuICAgIHJlbGVhc2U6IHYxLjExLjNcbnNwZWM6XG4gICMgY29udHJvbGxlciBpcyBhIHN0YXRlZnVsU2V0IHdpdGggaWJtLWJsb2NrLWNzaS1jb250cm9sbGVyIGNvbnRhaW5lclxuICAjIGFuZCBjc2ktcHJvdmlzaW9uZXIsIGNzaS1hdHRhY2hlciwgY3NpLXNuYXBzaG90dGVyIGFuZCBsaXZlbmVzc3Byb2JlIHNpZGVjYXJzLlxuICBjb250cm9sbGVyOlxuICAgIHJlcG9zaXRvcnk6IHF1YXkuaW8vaWJtY3NpYmxvY2svaWJtLWJsb2NrLWNzaS1kcml2ZXItY29udHJvbGxlclxuICAgIHRhZzogXCIxLjExLjJcIlxuICAgIGltYWdlUHVsbFBvbGljeTogSWZOb3RQcmVzZW50XG4gICAgYWZmaW5pdHk6XG4gICAgICBub2RlQWZmaW5pdHk6XG4gICAgICAgIHJlcXVpcmVkRHVyaW5nU2NoZWR1bGluZ0lnbm9yZWREdXJpbmdFeGVjdXRpb246XG4gICAgICAgICAgbm9kZVNlbGVjdG9yVGVybXM6XG4gICAgICAgICAgICAtIG1hdGNoRXhwcmVzc2lvbnM6XG4gICAgICAgICAgICAgICAgLSBrZXk6IGt1YmVybmV0ZXMuaW8vYXJjaFxuICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IEluXG4gICAgICAgICAgICAgICAgICB2YWx1ZXM6XG4gICAgICAgICAgICAgICAgICAgIC0gYW1kNjRcbiAgICAgICAgICAgICAgICAgICAgLSBzMzkweFxuICAgICAgICAgICAgICAgICAgICAtIHBwYzY0bGVcblxuICAjIG5vZGUgaXMgYSBkYWVtb25TZXQgd2l0aCBpYm0tYmxvY2stY3NpLW5vZGUgY29udGFpbmVyXG4gICMgYW5kIGNzaS1ub2RlLWRyaXZlci1yZWdpc3RyYXIgYW5kIGxpdmVuZXNzcHJvYmUgc2lkZWNhcnMuXG4gIG5vZGU6XG4gICAgcmVwb3NpdG9yeTogcXVheS5pby9pYm1jc2libG9jay9pYm0tYmxvY2stY3NpLWRyaXZlci1ub2RlXG4gICAgdGFnOiBcIjEuMTEuMlwiXG4gICAgaW1hZ2VQdWxsUG9saWN5OiBJZk5vdFByZXNlbnRcbiAgICBhZmZpbml0eTpcbiAgICAgIG5vZGVBZmZpbml0eTpcbiAgICAgICAgcmVxdWlyZWREdXJpbmdTY2hlZHVsaW5nSWdub3JlZER1cmluZ0V4ZWN1dGlvbjpcbiAgICAgICAgICBub2RlU2VsZWN0b3JUZXJtczpcbiAgICAgICAgICAgIC0gbWF0Y2hFeHByZXNzaW9uczpcbiAgICAgICAgICAgICAgICAtIGtleToga3ViZXJuZXRlcy5pby9hcmNoXG4gICAgICAgICAgICAgICAgICBvcGVyYXRvcjogSW5cbiAgICAgICAgICAgICAgICAgIHZhbHVlczpcbiAgICAgICAgICAgICAgICAgICAgLSBhbWQ2NFxuICAgICAgICAgICAgICAgICAgICAtIHMzOTB4XG4gICAgICAgICAgICAgICAgICAgIC0gcHBjNjRsZVxuXG4jICAgIHRvbGVyYXRpb25zOlxuIyAgICAtIGVmZmVjdDogTm9TY2hlZHVsZVxuIyAgICAgIGtleTogbm9kZS1yb2xlLmt1YmVybmV0ZXMuaW8vbWFzdGVyXG4jICAgICAgb3BlcmF0b3I6IEV4aXN0c1xuXG4gIHNpZGVjYXJzOlxuICAtIG5hbWU6IGNzaS1ub2RlLWRyaXZlci1yZWdpc3RyYXJcbiAgICByZXBvc2l0b3J5OiBrOHMuZ2NyLmlvL3NpZy1zdG9yYWdlL2NzaS1ub2RlLWRyaXZlci1yZWdpc3RyYXJcbiAgICB0YWc6IFwidjIuNi4zXCJcbiAgICBpbWFnZVB1bGxQb2xpY3k6IElmTm90UHJlc2VudFxuICAtIG5hbWU6IGNzaS1wcm92aXNpb25lclxuICAgIHJlcG9zaXRvcnk6IGs4cy5nY3IuaW8vc2lnLXN0b3JhZ2UvY3NpLXByb3Zpc2lvbmVyXG4gICAgdGFnOiBcInYzLjQuMFwiXG4gICAgaW1hZ2VQdWxsUG9saWN5OiBJZk5vdFByZXNlbnRcbiAgLSBuYW1lOiBjc2ktYXR0YWNoZXJcbiAgICByZXBvc2l0b3J5OiBrOHMuZ2NyLmlvL3NpZy1zdG9yYWdlL2NzaS1hdHRhY2hlclxuICAgIHRhZzogXCJ2NC4yLjBcIlxuICAgIGltYWdlUHVsbFBvbGljeTogSWZOb3RQcmVzZW50XG4gIC0gbmFtZTogY3NpLXNuYXBzaG90dGVyXG4gICAgcmVwb3NpdG9yeTogazhzLmdjci5pby9zaWctc3RvcmFnZS9jc2ktc25hcHNob3R0ZXJcbiAgICB0YWc6IFwidjYuMi4xXCJcbiAgICBpbWFnZVB1bGxQb2xpY3k6IElmTm90UHJlc2VudFxuICAtIG5hbWU6IGNzaS1yZXNpemVyXG4gICAgcmVwb3NpdG9yeTogazhzLmdjci5pby9zaWctc3RvcmFnZS9jc2ktcmVzaXplclxuICAgIHRhZzogXCJ2MS43LjBcIlxuICAgIGltYWdlUHVsbFBvbGljeTogSWZOb3RQcmVzZW50XG4gIC0gbmFtZTogY3NpLWFkZG9ucy1yZXBsaWNhdG9yXG4gICAgcmVwb3NpdG9yeTogcXVheS5pby9pYm1jc2libG9jay9jc2ktYmxvY2stdm9sdW1lcmVwbGljYXRpb24tb3BlcmF0b3JcbiAgICB0YWc6IFwidjAuOS4wXCJcbiAgICBpbWFnZVB1bGxQb2xpY3k6IElmTm90UHJlc2VudFxuICAtIG5hbWU6IGNzaS12b2x1bWUtZ3JvdXBcbiAgICByZXBvc2l0b3J5OiBxdWF5LmlvL2libWNzaWJsb2NrL2NzaS12b2x1bWUtZ3JvdXAtb3BlcmF0b3JcbiAgICB0YWc6IFwidjAuOS4xXCJcbiAgICBpbWFnZVB1bGxQb2xpY3k6IElmTm90UHJlc2VudFxuICAtIG5hbWU6IGxpdmVuZXNzcHJvYmVcbiAgICByZXBvc2l0b3J5OiBrOHMuZ2NyLmlvL3NpZy1zdG9yYWdlL2xpdmVuZXNzcHJvYmVcbiAgICB0YWc6IFwidjIuOS4wXCJcbiAgICBpbWFnZVB1bGxQb2xpY3k6IElmTm90UHJlc2VudFxuXG4jICBoZWFsdGhQb3J0OiA5ODA4XG4jICBpbWFnZVB1bGxTZWNyZXRzOlxuIyAgLSBcInNlY3JldE5hbWVcIlxuIn0sImtpbmQiOiJDb25maWdNYXAiLCJtZXRhZGF0YSI6eyJuYW1lIjoiZmxhc2hzeXN0ZW0tY3NpLWNyIn19 - type: olm.bundle.object value: data: eyJhcGlWZXJzaW9uIjoicmJhYy5hdXRob3JpemF0aW9uLms4cy5pby92MSIsImtpbmQiOiJSb2xlIiwibWV0YWRhdGEiOnsiY3JlYXRpb25UaW1lc3RhbXAiOm51bGwsIm5hbWUiOiJmbGFzaHN5c3RlbWNsdXN0ZXItbWV0cmljcyJ9LCJydWxlcyI6W3siYXBpR3JvdXBzIjpbIiJdLCJyZXNvdXJjZXMiOlsic2VydmljZXMiLCJlbmRwb2ludHMiLCJwb2RzIl0sInZlcmJzIjpbImdldCIsImxpc3QiLCJ3YXRjaCJdfV19 @@ -30,19 +30,19 @@ properties: data: eyJhcGlWZXJzaW9uIjoidjEiLCJraW5kIjoiU2VydmljZSIsIm1ldGFkYXRhIjp7ImNyZWF0aW9uVGltZXN0YW1wIjpudWxsLCJsYWJlbHMiOnsib2RmIjoic3RvcmFnZS5pYm0uY29tIn0sIm5hbWUiOiJpYm0tc3RvcmFnZS1vZGYtb3BlcmF0b3ItbWV0cmljcy1zZXJ2aWNlIn0sInNwZWMiOnsicG9ydHMiOlt7Im5hbWUiOiJodHRwcyIsInBvcnQiOjg0NDMsInRhcmdldFBvcnQiOiJodHRwcyJ9XSwic2VsZWN0b3IiOnsib2RmIjoic3RvcmFnZS5pYm0uY29tIn19LCJzdGF0dXMiOnsibG9hZEJhbGFuY2VyIjp7fX19 - type: olm.bundle.object value: - data: eyJhcGlWZXJzaW9uIjoib3BlcmF0b3JzLmNvcmVvcy5jb20vdjFhbHBoYTEiLCJraW5kIjoiQ2x1c3RlclNlcnZpY2VWZXJzaW9uIiwibWV0YWRhdGEiOnsiYW5ub3RhdGlvbnMiOnsiYWxtLWV4YW1wbGVzIjoiW1xuICB7XG4gICAgXCJhcGlWZXJzaW9uXCI6IFwib2RmLmlibS5jb20vdjFhbHBoYTFcIixcbiAgICBcImtpbmRcIjogXCJGbGFzaFN5c3RlbUNsdXN0ZXJcIixcbiAgICBcIm1ldGFkYXRhXCI6IHtcbiAgICAgIFwibmFtZVwiOiBcImZsYXNoc3lzdGVtY2x1c3Rlci1zYW1wbGVcIixcbiAgICAgIFwibmFtZXNwYWNlXCI6IFwib3BlbnNoaWZ0LXN0b3JhZ2VcIlxuICAgIH0sXG4gICAgXCJzcGVjXCI6IHtcbiAgICAgIFwiZGVmYXVsdFBvb2xcIjoge1xuICAgICAgICBcImZzVHlwZVwiOiBcImV4dDRcIixcbiAgICAgICAgXCJwb29sTmFtZVwiOiBcIlBvb2wwXCIsXG4gICAgICAgIFwic3BhY2VFZmZpY2llbmN5XCI6IFwidGhpY2tcIixcbiAgICAgICAgXCJzdG9yYWdlY2xhc3NOYW1lXCI6IFwib2RmLWZsYXNoc3lzdGVtY2x1c3Rlci1zYW1wbGVcIixcbiAgICAgICAgXCJ2b2x1bWVOYW1lUHJlZml4XCI6IFwib2RmXCJcbiAgICAgIH0sXG4gICAgICBcImluc2VjdXJlU2tpcFZlcmlmeVwiOiB0cnVlLFxuICAgICAgXCJuYW1lXCI6IFwiZmxhc2hzeXN0ZW0teHh4XCIsXG4gICAgICBcInNlY3JldFwiOiB7XG4gICAgICAgIFwibmFtZVwiOiBcImZzLXNlY3JldHMtZXhhbXBsZVwiLFxuICAgICAgICBcIm5hbWVzcGFjZVwiOiBcIm9wZW5zaGlmdC1zdG9yYWdlXCJcbiAgICAgIH1cbiAgICB9XG4gIH1cbl0iLCJjYXBhYmlsaXRpZXMiOiJTZWFtbGVzcyBVcGdyYWRlcyIsImNvbnNvbGUub3BlbnNoaWZ0LmlvL3BsdWdpbnMiOiJbXCJpYm0tc3RvcmFnZS1vZGYtcGx1Z2luXCJdIiwib2xtLnNraXBSYW5nZSI6Ilx1MDAzZT0wLjAuMSBcdTAwM2MxLjQuMSIsIm9wZXJhdG9ycy5vcGVyYXRvcmZyYW1ld29yay5pby9idWlsZGVyIjoib3BlcmF0b3Itc2RrLXYxLjI1LjAiLCJvcGVyYXRvcnMub3BlcmF0b3JmcmFtZXdvcmsuaW8vb3BlcmF0b3ItdHlwZSI6Im5vbi1zdGFuZGFsb25lIiwib3BlcmF0b3JzLm9wZXJhdG9yZnJhbWV3b3JrLmlvL3Byb2plY3RfbGF5b3V0IjoiZ28ua3ViZWJ1aWxkZXIuaW8vdjMifSwibmFtZSI6ImlibS1zdG9yYWdlLW9kZi1vcGVyYXRvci52MS40LjEiLCJuYW1lc3BhY2UiOiJwbGFjZWhvbGRlciJ9LCJzcGVjIjp7ImFwaXNlcnZpY2VkZWZpbml0aW9ucyI6e30sImN1c3RvbXJlc291cmNlZGVmaW5pdGlvbnMiOnsib3duZWQiOlt7ImRlc2NyaXB0aW9uIjoiRmxhc2hTeXN0ZW1DbHVzdGVyIGlzIHRoZSBTY2hlbWEgZm9yIHRoZSBGbGFzaFN5c3RlbUNsdXN0ZXJzIEFQSSIsImRpc3BsYXlOYW1lIjoiRmxhc2ggU3lzdGVtIENsdXN0ZXIiLCJraW5kIjoiRmxhc2hTeXN0ZW1DbHVzdGVyIiwibmFtZSI6ImZsYXNoc3lzdGVtY2x1c3RlcnMub2RmLmlibS5jb20iLCJ2ZXJzaW9uIjoidjFhbHBoYTEifV19LCJkZXNjcmlwdGlvbiI6IklCTSBTdG9yYWdlIE9ERiBvcGVyYXRvciBwcm92aWRlcyBiYXNpYyBzdG9yYWdlIGNhcGFiaWxpdGllcyBhbmQgZXh0ZW5kZWQgbWFuYWdlbWVudCBmdW5jdGlvbnMgdGhyb3VnaCBPcGVuU2hpZnQgZGF0YSBmb3VuZGF0aW9uIGZyYW1ld29yayBmb3IgYXBwbGljYXRpb25zLiIsImRpc3BsYXlOYW1lIjoiSUJNIFN0b3JhZ2UgT0RGIG9wZXJhdG9yIiwiaWNvbiI6W3siYmFzZTY0ZGF0YSI6ImlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUVYQUFBQWVZQ0FZQUFBQ1dLRWdoQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUF5QnBWRmgwV0UxTU9tTnZiUzVoWkc5aVpTNTRiWEFBQUFBQUFEdy9lSEJoWTJ0bGRDQmlaV2RwYmowaTc3dS9JaUJwWkQwaVZ6Vk5NRTF3UTJWb2FVaDZjbVZUZWs1VVkzcHJZemxrSWo4K0lEeDRPbmh0Y0cxbGRHRWdlRzFzYm5NNmVEMGlZV1J2WW1VNmJuTTZiV1YwWVM4aUlIZzZlRzF3ZEdzOUlrRmtiMkpsSUZoTlVDQkRiM0psSURVdU1DMWpNRFl3SURZeExqRXpORGMzTnl3Z01qQXhNQzh3TWk4eE1pMHhOem96TWpvd01DQWdJQ0FnSUNBZ0lqNGdQSEprWmpwU1JFWWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJajRnUEhKa1pqcEVaWE5qY21sd2RHbHZiaUJ5WkdZNllXSnZkWFE5SWlJZ2VHMXNibk02ZUcxd1BTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZJaUI0Yld4dWN6cDRiWEJOVFQwaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOTRZWEF2TVM0d0wyMXRMeUlnZUcxc2JuTTZjM1JTWldZOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXpWSGx3WlM5U1pYTnZkWEpqWlZKbFppTWlJSGh0Y0RwRGNtVmhkRzl5Vkc5dmJEMGlRV1J2WW1VZ1VHaHZkRzl6YUc5d0lFTlROU0JYYVc1a2IzZHpJaUI0YlhCTlRUcEpibk4wWVc1alpVbEVQU0o0YlhBdWFXbGtPalF4UkRVNE9EUTNOREZEUlRFeFJUWTROekF4T1RVeVFqbEdNemd4TWpJeElpQjRiWEJOVFRwRWIyTjFiV1Z1ZEVsRVBTSjRiWEF1Wkdsa09qUXhSRFU0T0RRNE5ERkRSVEV4UlRZNE56QXhPVFV5UWpsR016Z3hNakl4SWo0Z1BIaHRjRTFOT2tSbGNtbDJaV1JHY205dElITjBVbVZtT21sdWMzUmhibU5sU1VROUluaHRjQzVwYVdRNk5ERkVOVGc0TkRVME1VTkZNVEZGTmpnM01ERTVOVEpDT1VZek9ERXlNakVpSUhOMFVtVm1PbVJ2WTNWdFpXNTBTVVE5SW5odGNDNWthV1E2TkRGRU5UZzRORFkwTVVORk1URkZOamczTURFNU5USkNPVVl6T0RFeU1qRWlMejRnUEM5eVpHWTZSR1Z6WTNKcGNIUnBiMjQrSUR3dmNtUm1PbEpFUmo0Z1BDOTRPbmh0Y0cxbGRHRStJRHcvZUhCaFkydGxkQ0JsYm1ROUluSWlQejVTbjNaSkFBRElaVWxFUVZSNDJ1emRYWEliTnhxR1VkcmxmU0FybVVaMmhLeUE4QXBHTzJJakt4bXRoTk50azdIeUkwZitUSW9OOURsVmtDZ25GNmszRjgybXFZY2Z6dWZ6QVFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBSC9mUkJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU1RSXVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkJBaTRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUVDTGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUVFJdUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQkFpNEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFRUNMZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFRUUl1QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJCQWk0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVFQ0xnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFRSXVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkJBaTRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUVDTGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUVFJdUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQkFpNEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFRUNMZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFRUUl1QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJCQWk0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVFQ0xnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFRSXVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkJBaTRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUVDTGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUVFJdUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQkFpNEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFRUNMZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFRUUl1QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJCQWk0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVFQ0xnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFRSXVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkJBaTRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUVDTGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUVFJdUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQkFpNEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFRUNMZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFRUUl1QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJCQWk0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVFQ0xnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFRSXVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkJBaTRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUVDTGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUVFJdUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQkFpNEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFRUNMZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFRUUl1QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJCQWk0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVFQ0xnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFRSXVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkJBaTRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUVDTGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUVFJdUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQkFpNEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFRUNMZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFRUUl1QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJCQWk0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVFQ0xnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFRSXVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkJBaTRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUVDTGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUVFJdUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQkFpNEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFRUNMZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFRUUl1QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJCQWk0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVFQ0xnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFRSXVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkJBaTRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUVDTGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUVFJdUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQkFpNEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFRUNMZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFRUUl1QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJCQWk0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVFQ0xnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFRSXVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkJBaTRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUVDTGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUVFJdUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQkFpNEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFRUNMZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFRUUl1QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJCQWk0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVFQ0xnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFRSXVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkJBaTRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUVDTGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUVFJdUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQkFpNEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFRUNMZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFRUUl1QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJCQWk0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVFQ0xnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFRSXVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkJBaTRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUVDTGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUVFJdUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQkFpNEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFRUNMZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFRUUl1QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJCQWk0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVFQ0xnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFRSXVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkJBaTRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUVDTGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUVFJdUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQkFpNEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFRUNMZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFRUUl1QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJCQWk0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVFQ0xnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFRSXVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkJBaTRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUVDTGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUVFJdUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQkFpNEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFRUNMZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFRUUl1QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJCQWk0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVFQ0xnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFRSXVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkJBaTRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUVDTGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUVFJdUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQkFpNEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFRUNMZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFRUUl1QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJCQWk0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVFQ0xnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFRSXVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkJBaTRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUVDTGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUVFJdUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQkFpNEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFRUNMZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFRUUl1QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJCQWk0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVFQ0xnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFRSXVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkJuMHpBTGYzeTIrOW5Ld0FBQUJ0VW41K216MmJvV3lydHVQNi90QVFBQU1EdXpKZnpqNzUzejM4KysrdExnQjU5K1BEQkNCdVNTbk5CQlFBZ1luNSttbjdkK24razE0OEE0UHQ2ZUszT2V3c0JBUGdYOVgvLy9ZL2ZLZUpkQ0xnQUFBQUFBQUFBc0dYNWN2NVJLcTIrOG8vcUw3LzkvdkxuOVplR21qa0JBQUFBM2tVMkFRRHdUcW9KQUFDQUxSQndBUUFBQUFBQUFHQkU5YTkva0VyNzdyL3ovRFQ1dEIwQUFBQ0FHMG1sSGIzZUFnRGMrZm5HWkFVQUFHQXJCRndBQUFBQUFBQUEyS3Y2OG9kVTJzdWY1OHY1OHZqNWFXcm1BZ0FBQVBnaGVUa0NMZ0RBUFZVVEFBQUFXeUhnQWdBQUFBQUFBQUIvbHkvbmkxVCsxRytwMXdjK1JSb0FBQURnVmRrRUFJRG5Hd0FBd0Y0SXVBQUFBQUFBQUFEQWo2blhCNm0wNitQNWNyNDhmbjZhbXBrQUFBQ0F2VXVsSFFWd0FZQjdQYyt3QWdBQXNDVUNMZ0FBQUFBQUFBRHc4L0xoeGFjOHB2Skh2NlZldm91NkFBQUFBSHRVbHlQZ0FnRGNRellCQUFDd0pRSXVBQUFBQUFBQUFIQS85ZnJncjFFWG56NE5BQUFBN0VFcWJSSzJCUUR1SUpzQUFBRFlFZ0VYQUFBQUFBQUFBSGhmZGYyU1NxdVhuK2ZyOGN0TUFBQUF3SUR5Y3J6bUFRRGNUQ3J0YUFVQUFHQnJCRndBQUFBQUFBQUE0TEh5NWF4dk9GNi96WmR6ZUg2YVBwc0hBQUFBNkZ4ZGp0YzRBSUJiUDc4QUFBRFlGQUVYQUFBQUFBQUFBTmlXZlBnV2RLbVhQL3Z5WGRBRkFBQUE2RkVxYlhwK21wb2xBSUJiUEsrd0FnQUFzRVVDTGdBQUFBQUFBQUN3ZlhYOThwZWd5K3dYbndBQUFJQk8xT1g4YWdZQTRBYXlDUUFBZ0MwU2NBRUFBQUFBQUFDQS90VDFTeXBmK2kzejlRaTZBQUFBQUJ1VlRRQUEzRWcxQVFBQXNFVUNMZ0FBQUFBQUFBRFF0M3c1MTZCTFhiODhQMDJmVFFNQUFBQnNSU3J0NlBVS0FPQW5uMDlNVmdBQUFMWkt3QVVBQUFBQUFBQUF4bExYTDZtMDlmdDhQYzlQVXpNTkFBQUE4RUI1T1FJdUFNRFBxQ1lBQUFDMlNzQUZBQUFBQUFBQUFNYVZMMmNOdXF6ZjZrSE1CUUFBQUhpTWJBSUF3UE1KQUFCZ1ZCOU5BQUFBQUFBQUFBQzdVWmN6cDlMT3l6bXV4eVFBQUFEQWUvRmFCQURnZVFRQUFEQ3FUeVlBQUFBQUFBQUFnRjJxNjVkVTJ2cDlYcy96MC9UWkxBQUFBTUFkMWVWNC9RRUFpTWdtQUFBQXR1eWpDUUFBQUFBQUFBQmc5L0p5YWlydHZKeVRUN0VFQUFBQTdpV1ZObGtCQUFqSUpnQUFBTGJza3drQUFBQUFBQUFBZ0JmeWVsSnBkZmsrcitmNWFmTEoyQUFBQU1DdDVPVTBNd0FBYnlVOER3QUE5T0NqQ1FBQUFBQUFBQUNBVitUbDFGVGFlVGtuYjVBR0FBQUFicUNhQUFEdy9BRUFBQmlOZ0FzQUFBQUFBQUFBOEJiNThDM21jbHpPWkJJQUFBQWd3dXNLQUlEbkRRQUF3R2crbVFBQUFBQUFBQUFBK0VGMS9aSkt1ejZlbjUrbVpoWUFBQURnamVweWZqVURBUEFHMlFRQUFFQVBQcG9BQUFBQUFBQUFBUGdKZFRsekt1MjhuS001QUFBQWdEZklKZ0FBM3FpYUFBQUE2SUdBQ3dBQUFBQUFBQUJ3Sy9VU2Nqa3RaeklIQUFBQThCb2hXQURnRGM4WC9GMERBQURRalU4bUFBQUFBQUFBQUFCdUxDOW5UcVd0ait2NitQbHBhbVlCQUFBQVhzakwrV3dHQU9BN3Fna0FBSUJlQ0xnQUFBQUFBQUFBQVBkVTF5K3B0UG53TmVUaUY3TUFBQUNBVlRZQkFPRDVBZ0FBTUlxUEpnQUFBQUFBQUFBQTNrRmVUazJsblpkelhNNWtFZ0FBQU5pMzlUVUNLd0FBbmljQUFBQWpFSEFCQUFBQUFBQUFBTjViWGM2Y1NqdDVBellBQUFEc1dqVUJBUENLYkFJQUFLQW5BaTRBQUFBQUFBQUF3S1BrNWRSVTJsbklCUUFBQVBZcGxUWlpBUUQ0QjlrRUFBQkFUd1JjQUFBQUFBQUFBSUF0dUlaY1RuNXhDd0FBQUhZbG13QUFlRW4wSFFBQTZKR0FDd0FBQUFBQUFBQ3dKWGs1OHlYbTRnM2FBQUFBTUw1cUFnREE4d01BQUtCM0FpNEFBQUFBQUFBQXdGWlZJUmNBQUFBWTMzTHZQMWtCQVBDOEFBQUE2Sm1BQ3dBQUFBQUFBQUN3ZGRlUXk4a2J0d0VBQUdETWUzOFRBQUFYMlFRQUFFQ1BCRndBQUFBQUFBQUFnRjdrNWN4Q0xnQUFBRERrUFQ4QXdLcWFBQUFBNkpHQUN3QUFBQUFBQUFEUW0zejRHbkk1TCtkb0RnQUFBT2lmZTN3QVFMd2RBQURvbVlBTEFBQUFBQUFBQU5Dekt1UUNBQUFBUThnbUFJRGRxeVlBQUFCNkplQUNBQUFBQUFBQUFJeEF5QVVBQUFENmxrMEFBSjRQbUFBQUFPaVZnQXNBQUFBQUFBQUFNSkpyeU9XMG5Na2NBQUFBMEE5aFZnRHdQQUFBQUtCWEFpNEFBQUFBQUFBQXdJanljbVloRndBQUFPaEtOUUVBN0ZZMkFRQUEwRE1CRndBQUFBQUFBQUJnWlBrZzVBSUFBQURkY1A4T0FMdVZUUUFBQVBSTXdBVUFBQUFBQUFBQTJJTjhFSElCQUFDQVh1N2hBWUFkU2FVZHJRQUFBUFJPd0FVQUFBQUFBQUFBMkpOOEVISUJBQUNBTGFzbUFBRFhmd0FBZ040SXVBQUFBQUFBQUFBQWU1UVBRaTRBQUFDd1NlN1ZBY0IxSHdBQW9EY0NMZ0FBQUFBQUFBREFudVdEa0FzQUFBQnNUVFVCQU94R05nRUFBREFDQVJjQUFBQUFBQUFBQUNFWEFBQUEyTnA5T2dDd0Q5VUVBQURBQ0FSY0FBQUFBQUFBQUFDK3lRY2hGd0FBQUhpNDViNzhhQVVBR1A1NjczVjRBQUJnR0FJdUFBQUFBQUFBQUFCL2x3OWZReTUrV1F3QUFBQWVkMjhPQUl5dG1nQUFBQmlGZ0FzQUFBQUFBQUFBd090cUt1MHM1QUlBQUFEdkxwc0FBRnp2QVFBQWVpSGdBZ0FBQUFBQUFBRHc3NFJjQUFBQTRKMjVEd2NBMTNrQUFJQmVDTGdBQUFBQUFBQUFBTHpkTmVReW1RSUFBQUR1Zng5dUFnQVlWallCQUFBd0VnRVhBQUFBQUFBQUFJQWZONmZTVGtJdUFBQUFjRi91dlFGZ1dOa0VBQURBU0FSY0FBQUFBQUFBQUFCaThrSElCUUFBQU43ai9oc0FHRWdxN1dnRkFBQmdOQUl1QUFBQUFBQUFBQUEvSngrK2hseTg0UndBQUFCdXI1b0FBRnpmQVFBQXRrN0FCUUFBQUFBQUFBRGdObW9xN1N6a0FnQUFBTGUxM0d0UFZnQUExM1VBQUlBdEUzQUJBQUFBQUFBQUFMaXRhOGpGbTlBQkFBRGdSdmZhSmdDQVlXUVRBQUFBSXhKd0FRQUFBQUFBQUFDNGp6bVZkaEp5QVFBQWdKK1dUUUFBdzZnbUFBQUFSaVRnQWdBQUFBQUFBQUJ3UC9ud05lUnlOQVVBQUFERXViY0dnQ0d1NTRMbkFBREFzQVJjQUFBQUFBQUFBQUR1cjZiU3puN1pEQUFBQU1LeUNRQ2dlOVVFQUFEQXFBUmNBQUFBQUFBQUFBRGV6eHB5T2ZtVVVRQUFBUGhoMlFRQTRIb09BQUN3VlFJdUFBQUFBQUFBQUFEdkt5OW5Ya011cGdBQUFJQzNXKzZsajFZQUFOZHhBQUNBTFJKd0FRQUFBQUFBQUFCNGpKeEtPM3ZUT2dBQUFMeFpOUUVBZEN1YkFBQUFHSm1BQ3dBQUFBQUFBQURBWTlWVTJtazVreWtBQUFEZys5dy9BMEMzc2drQUFJQ1JDYmdBQUFBQUFBQUFBRHhlWHM2Y1NqdWFBZ0FBQVA3MUhob0E2SWpYdmdFQWdEMFFjQUVBQUFBQUFBQUEySTZhU2p2N05IRUFBQUI0L2Q3WkJBRGcrZzBBQUxBMUFpNEFBQUFBQUFBQUFOc3pwOUpPWmdBQUFJQy9FejRGQU5kdEFBQ0FyUkZ3QVFBQUFBQUFBQURZcHB4S095L25hQW9BQUFENGsyb0NBT2hHTmdFQUFMQUhBaTRBQUFBQUFBQUFBTnRXVTJrbm4xSUtBQUFBZjhnbUFJQnVWQk1BQUFCN0lPQUNBQUFBQUFBQUFMQjllVGx6S3Uxb0NnQUFBRGdjM0NNRFFCZlhhMkZ5QUFCZ053UmNBQUFBQUFBQUFBRDZVVk5wSjI5NkJ3QUFnQyt4VXdCZzI2b0pBQUNBdlJCd0FRQUFBQUFBQUFEb1MxN092SVpjVEFFQUFNRE83NDhCQU5kckFBQ0FUUkJ3QVFBQUFBQUFBQURvVTA2bG5aY3ptUUlBQUlBOVd1NkpqMVlBQU5kcEFBQ0FMUkJ3QVFBQUFBQUFBQURvMjV4S081a0JBQUNBSGFvbUFJRE55aVlBQUFEMlJNQUZBQUFBQUFBQUFLQi9PWlYyWHM1a0NnQUFBUGJFdlRBQWJGWTJBUUFBc0NjQ0xnQUFBQUFBQUFBQTQ1aFRhU2N6QUFBQXNDUFpCQUN3TGFtMG94VUFBSUM5RVhBQkFBQUFBQUFBQUJoTFRxV2RmUUk1QUFBQU8xRk5BQUN1endBQUFJOG00QUlBQUFBQUFBQUFNS2JacDV3Q0FBQ3dCeUttQU9DNkRBQUE4R2dDTGdBQUFBQUFBQUFBNDZxcHRKTTN6QU1BQURENi9hOEpBR0F6c2drQUFJQTlFbkFCQUFBQUFBQUFBQmhiWHM2Y1NqdWFBZ0FBZ0lIdmZRR0FiYWdtQUFBQTlrakFCUUFBQUFBQUFBQmdIMm9xN2JTY3lSUUFBQUNNUnJnVUFEWnhQZmI2TXdBQXNGc0NMZ0FBQUFBQUFBQUErNUdYTTNzVFBRQUFBSVBlOHdJQWoxVk5BQUFBN0pXQUN3QUFBQUFBQUFEQS9xd1JsNU1aQUFBQUdFZzJBUUM0SGdNQUFEeUtnQXNBQUFBQUFBQUF3RDdsVk5wNU9aTXBBQUFBR01GeWozdTBBZ0M0RGdNQUFEeUNnQXNBQUFBQUFBQUF3TDdOM2xnUEFBREFJS29KQU9CaHNna0FBSUE5RTNBQkFBQUFBQUFBQUtDbTBrN0xtVXdCQUFCQXo5emJBc0REWkJNQUFBQjdKdUFDQUFBQUFBQUFBUHlmdmJzOWN0eTR3akNxVlNrUE9CTGpPaU00QXJRajhHWTBiRWZpaldSTXJ0ZXI4YzRYZVlsdWdNQTVWU3o5VmIycUFuVlp3NGR3RWVmWHlSZmRBQUFBMk1GOUN3QjBORXgxdGdJQUFIQjBBaTRBQUFBQUFBQUFBTHgwaWJnOG1RRUFBSUFIVlV3QUFONS9BUUFBZWhOd0FRQUFBQUFBQUFEZ1YzR0p1Snhmb3lrQUFBQjROTzVaQVBDK0N3QUEwSnVBQ3dBQUFBQUFBQUFBYjRuejYrU1A3d0VBQUhoQXhRUUEwRTJZQUFBQVFNQUZBQUFBQUFBQUFJQ1BYU0l1VDJZQUFBRGdnWVFKQUtDYllnSUFBQUFCRndBQUFBQUFBQUFBUGhlWGlNdjVOWm9DQUFDQVIzQytZV2NyQUVEejkxdWZHUU1BQVB3ZzRBSUFBQUFBQUFBQXdEWGkvRHI1ZzN3QUFBQWU2STRGQU5vcUpnQUFBUGd2QVJjQUFBQUFBQUFBQUc1eGliZzhtUUVBQUlDTkN4TUFnUGRiQUFDQVhnUmNBQUFBQUFBQUFBQzRWWWk0QUFBQXNIWG4yM1cyQWdCNG53VUFBT2hCd0FVQUFBQUFBQUFBZ0l4THhPWDUvQnBOQVFBQXdFWVZFd0JBTTJFQ0FBQ0FQd200QUFBQUFBQUFBQUJ3ajVOZldnVUFBR0NyaEVjQm9Ka3dBUUFBd0o4RVhBQUFBQUFBQUFBQXVGY1pwdnBrQmdBQUFEWW9UQUFBeXhMMUJnQUFlRTNBQlFBQUFBQUFBQUNBSmNRbDR1S1h6UUVBQU5pWVlnSUE4UDRLQUFEUW1vQUxBQUFBQUFBQUFBQkxpZlBySk9JQ0FBREFscmhUQWNEN0tnQUFRR3NDTGdBQUFBQUFBQUFBTE8wU2Nabk5BQUFBd0VZVUV3REFZc0lFQUFBQXJ3bTRBQUFBQUFBQUFBRFFRaG1tK21RR0FBQUFOaUJNQUFDTEtTWUFBQUI0VGNBRkFBQUFBQUFBQUlCV1FzUUZBQUNBTFRqZnA3TVZBT0R1OTlQUkNnQUFBRzhUY0FFQUFBQUFBQUFBb0tWTHhPWFpIL1lEQUFDdzluMXFBZ0M0V3pFQkFBREEyd1JjQUFBQUFBQUFBQURvNFNUaUFnQUF3SXJDQkFEZy9SUUFBS0FWQVJjQUFBQUFBQUFBQUhxNVJGeG1Nd0FBQUxBR055a0FlQjhGQUFCb1JjQUZBQUFBQUFBQUFJQ2V5akRWSnpNQUFBQ3d4azFxQWdCSUN4TUFBQUM4VDhBRkFBQUFBQUFBQUlEZVFzUUZBQUNBTlp6djBkRUtBSkFTSmdBQUFIaWZnQXNBQUFBQUFBQUFBR3Y0SG5IeHhUa0FBQUI2MzZNbUFJRGJERk9kclFBQUFQQXhBUmNBQUFBQUFBQUFBTllTNTlkSnhBVUFBSUNPaWdrQXdQc25BQURBMGdSY0FBQUFBQUFBQUFCWW00Z0xBQUFBM1p4djBOa0tBSEQxKzZiUGJnRUFBSzRnNEFJQUFBQUFBQUFBd0JhSXVBQUFBTkJMbUFBQXZHOENBQUFzU2NBRkFBQUFBQUFBQUlDdE9Qa1ZkQUFBQURvSUV3REExWW9KQUFBQVBpZmdBZ0FBQUFBQUFBREFscFJocWs5bUFBQUFvQ1VCVVFDNDZ2MXl0QUlBQU1CMUJGd0FBQUFBQUFBQUFOaWFFSEVCQUFDZzllMXBBZ0Q0VkRFQkFBREFkZjR3QVk1eUFBRGdBRTRtMk0xL1IzY25BQUFBQUVCZnhRUUFBQUFBaDNYNnpkOWdBZ0R3K1A5UEMxMThlWDUrdGdJQUFBQUFBQUFBQUFBQUFBQUFBQUFBUU1MdkpnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQXlCRndBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQklFbkFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBRWdTY0FFQUFBQUFBQUFBQUFBQUFBQUFBQUFBU0JKd0FRQUFBQUFBQUFBQUFBQUFBQUFBQUFCSUVuQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFFZ1NjQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFTQkp3QVFBQUFBQUFBQUFBQUFBQUFBQUFBQUJJRW5BQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUVnU2NBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQVNCSndBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQklFbkFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBRWdTY0FFQUFBQUFBQUFBQUFBQUFBQUFBQUFBU0JKd0FRQUFBQUFBQUFBQUFBQUFBQUFBQUFCSUVuQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFFZ1NjQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFTQkp3QVFBQUFBQUFBQUFBQUFBQUFBQUFBQUJJRW5BQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUVnU2NBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQVNCSndBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQklFbkFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBRWdTY0FFQUFBQUFBQUFBQUFBQUFBQUFBQUFBU0JKd0FRQUFBQUFBQUFBQUFBQUFBQUFBQUFCSUVuQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFFZ1NjQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFTQkp3QVFBQUFBQUFBQUFBQUFBQUFBQUFBQUJJRW5BQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUVnU2NBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQVNCSndBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQklFbkFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBRWdTY0FFQUFBQUFBQUFBQUFBQUFBQUFBQUFBU0JKd0FRQUFBQUFBQUFBQUFBQUFBQUFBQUFCSUVuQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFFZ1NjQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFTQkp3QVFBQUFBQUFBQUFBQUFBQUFBQUFBQUJJRW5BQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUVnU2NBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQVNCSndBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQklFbkFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBRWdTY0FFQUFBQUFBQUFBQUFBQUFBQUFBQUFBU0JKd0FRQUFBQUFBQUFBQUFBQUFBQUFBQUFCSUVuQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFFZ1NjQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFTQkp3QVFBQUFBQUFBQUFBQUFBQUFBQUFBQUJJRW5BQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUVnU2NBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQVNCSndBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQklFbkFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBRWdTY0FFQUFBQUFBQUFBQUFBQUFBQUFBQUFBU0JKd0FRQUFBQUFBQUFBQUFBQUFBQUFBQUFCSUVuQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFFZ1NjQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFTQkp3QVFBQUFBQUFBQUFBQUFBQUFBQUFBQUJJRW5BQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUVnU2NBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQVNCSndBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQklFbkFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBRWdTY0FFQUFBQUFBQUFBQUFBQUFBQUFBQUFBU0JKd0FRQUFBQUFBQUFBQUFBQUFBQUFBQUFCSUVuQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFFZ1NjQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFTQkp3QVFBQUFBQUFBQUFBQUFBQUFBQUFBQUJJRW5BQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUVnU2NBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQVNCSndBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQklFbkFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBRWdTY0FFQUFBQUFBQUFBQUFBQUFBQUFBQUFBU0JKd0FRQUFBQUFBQUFBQUFBQUFBQUFBQUFCSUVuQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFFZ1NjQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFTQkp3QVFBQUFBQUFBQUFBQUFBQUFBQUFBQUJJRW5BQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUVnU2NBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQVNCSndBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQklFbkFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBRWdTY0FFQUFBQUFBQUFBQUFBQUFBQUFBQUFBU0JKd0FRQUFBQUFBQUFBQUFBQUFBQUFBQUFCSUVuQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFFZ1NjQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFTQkp3QVFBQUFBQUFBQUFBQUFBQUFBQUFBQUJJRW5BQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUVnU2NBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQVNCSndBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQklFbkFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBRWdTY0FFQUFBQUFBQUFBQUFBQUFBQUFBQUFBU0JKd0FRQUFBQUFBQUFBQUFBQUFBQUFBQUFCSUVuQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFFZ1NjQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFTQkp3QVFBQUFBQUFBQUFBQUFBQUFBQUFBQUJJRW5BQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUVnU2NBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQVNCSndBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQklFbkFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBRWdTY0FFQUFBQUFBQUFBQUFBQUFBQUFBQUFBU0JKd0FRQUFBQUFBQUFBQUFBQUFBQUFBQUFCSUVuQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFFZ1NjQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFTQkp3QVFBQUFBQUFBQUFBQUFBQUFBQUFBQUJJRW5BQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUVnU2NBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQVNCSndBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQklFbkFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBRWdTY0FFQUFBQUFBQUFBQUFBQUFBQUFBQUFBU0JKd0FRQUFBQUFBQUFBQUFBQUFBQUFBQUFCSUVuQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFFajZ3d1FzNlM5Ly85ZHNCUUFBWUlOTzM3Nk8xUXlQYlpqcWVQNUhXQUlBQUFBQTJ2bjJkZnlIRlhocG1LcS9Cd0lBQUxmWlQ4L1B6LzREQVEvbHk1Y3ZtL3ozOHZkd0FBRFF6ZW5mLy95cjd4VFJoWUFMU3lzbUFBQUFObnFyK0xEbDhZVzdFd0FBQUFEYUdxWWEzNzZPZjdNRUx4UVRBQUJBOTl0TVlCTmcvK0kzbjdzQUFFQVBsLy92OXAwaXV2amRCQUFBQUFBQUFBQUF3QS94NDlkL0FRQUFXUEUyTXdIQTdoVVRBQUFBN0l1QUN3QUFBQUFBQUFBQThOSkp4QVVBQUdCVllRS0EvZkxaR3dBQXdENEp1QUFBQUFBQUFBQUFBTDhTY1FFQUFGalIrU2FiclFDd1cyRUNBQUNBL1JGd0FRQUFBQUFBQUFBQTNuSXlBUUFBd0dyQ0JBQzdWVXdBQUFDd1B3SXVBQUFBQUFBQUFBREFtNGFwUGxrQkFBQmdGV0VDZ1AwWnBqcGFBUUFBWUo4RVhBQUFBQUFBQUFBQWdQZkVNTlhaREFBQUFQMjV4d0IyS1V3QUFBQ3dUd0l1QUFBQUFBQUFBQURBUjRwZkJnWUFBRmhGbUFCZ2Q0b0pBQUFBOWtuQUJRQUFBQUFBQUFBQStFd3hBUUFBUUhkaEFvRDlFRWtHQUFEWU53RVhBQUFBQUFBQUFBRGdNekZNZFRZREFBQkFYMjR4Z0YwSkV3QUFBT3lYZ0FzQUFBQUFBQUFBQUhDTjRsZUNBUUFBdWdzVEFPeEdNUUVBQU1CK0NiZ0FBQUFBQUFBQUFBRFhLaVlBQUFEb0trd0E4UGlFa1FFQUFQWlB3QVVBQUFBQUFBQUFBTGhXK0xJSkFBQkFYK2M3YkxZQ3dNTUxFd0FBQU95YmdBc0FBQUFBQUFBQUFIQ0xZZ0lBQUlDdXdnUUFENitZQUFBQVlOOEVYQUFBQUFBQUFBQUFnRnVFWDM4SEFBRG9lNGVaQU9CeERWTWRyUUFBQUxCL0FpNEFBQUFBQUFBQUFNQ3RpZ2tBQUFENkVkSUVlR2hoQWdBQWdQMFRjQUVBQUFBQUFBQUFBRzdteTRNQUFBQmRoUWtBSGxZeEFRQUF3UDRKdUFBQUFBQUFBQUFBQUJuRkJBQUFBTjJFQ1FBZXp6RFYwUW9BQUFESElPQUNBQUFBQUFBQUFBQ2tERk9kclFBQUFPQUdBK0JkWVFJQUFJQmpFSEFCQUFBQUFBQUFBQUN5aWdrQUFBRGNZQUI0ZGdNQUFCeWRnQXNBQUFBQUFBQUFBSkRtRitBQkFBQzYzbUNqRlFBOHN3RUFBTmdlQVJjQUFBQUFBQUFBQU9BZXhRUUFBQURkaEFrQUhrWXhBUUFBd0hFSXVBQUFBQUFBQUFBQUFIY1pwanBiQVFBQW9JdGlBb0NIRVNZQUFBQTREZ0VYQUFBQUFBQUFBQURnWHNVRUFBQUFmUXhUSGEwQXNQbG50ZUF4QUFEQXdRaTRBQUFBQUFBQUFBQUFkL09sRkFBQWdHN0NCQUNlMVFBQUFHeUxnQXNBQUFBQUFBQUFBTENFWWdJQUFBRDNGd0RmaFFrQUFBQ09SY0FGQUFBQUFBQUFBQUJZeEREVjJRb0FBQUJkN3EvUkNnQ2JmVWI3akF3QUFPQ0FCRndBQUFBQUFBQUFBSUNsaEFrQUFBRGNYd0NlMFFBQUFCeU5nQXNBQUFBQUFBQUFBTENVOEN2d0FBQUFYUlFUQUd4V21BQUFBT0I0QkZ3QUFBQUFBQUFBQUlBbEZSTUFBQUMwSjZBSnNNbG44MndGQUFDQVl4SndBUUFBQUFBQUFBQUFsaFFtQUFBQWNIOEJlRFlEQUFCd0pBSXVBQUFBQUFBQUFBREFvdnpTTUFBQVFCZkZCQUNiRXlZQUFBQTRKZ0VYQUFBQUFBQUFBQUJnYWNVRUFBQUE3UTFUSGEwQXNKbG5zcWd4QUFEQWdRbTRBQUFBQUFBQUFBQUFpL09GRlFBQWdDN0NCQUNleVFBQUFLeFB3QVVBQUFBQUFBQUFBR2doVEFBQUFOQmNNUUhBWm9RSkFBQUFqa3ZBQlFBQUFBQUFBQUFBYUNGTUFBQUEwTjR3MWRFS0FLcy9pMmNyQUFBQUhKdUFDd0FBQUFBQUFBQUEwSVF2cmdBQUFIUVJKZ0R3TEFZQUFHQmRBaTRBQUFBQUFBQUFBRUFyeFFRQUFBQnVMNEFEQ0JNQUFBQWNtNEFMQUFBQUFBQUFBQURRekREVjBRb0FBQUJ1TDRBZFA0Tm5Ld0FBQUNEZ0FnQUFBQUFBQUFBQXRCUW1BQUFBY0hzQmVBWURBQUN3WndJdUFBQUFBQUFBQUFCQVM4VUVBQUFBYmkrQUhRc1RBQUFBSU9BQ0FBQUFBQUFBQUFBME5VeDF0Z0lBQUVEejIydTBBa0QzWjYvUHZRQUFBUGhPd0FVQUFBQUFBQUFBQUdndFRBQUFBT0QyQXZEc0JRQUFZSzhFWEFBQUFBQUFBQUFBZ05iQ0JBQUFBTTBWRXdCMEZ5WUFBQURnUXNBRkFBQUFBQUFBQUFCb2JwanFiQVVBQUlEbXQ5ZG9CWUJ1ejF5ZmR3RUFBUENUZ0FzQUFBQUFBQUFBQU5CRG1BQUFBTUR0QmVDWkN3QUF3QjRKdUFBQUFBQUFBQUFBQUQyRUNRQUFBSm9ySmdEb0prd0FBQURBL3dpNEFBQUFBQUFBQUFBQVhReFRuYTBBQUFEUS9QWWFyUURRL0ZucmN5NEFBQUQrajRBTEFBQUFBQUFBQUFEUVM1Z0FBQURBN1FYZ1dRc0FBTURlQ0xnQUFBQUFBQUFBQUFDOWhBa0FBQUNhS3lZQWFDNU1BQUFBd0VzQ0xnQUFBQUFBQUFBQVFEZkRWR2NyQUFBQU5MKzlSaXNBTkh2Rytud0xBQUNBVndSY0FBQUFBQUFBQUFDQW5zSUVBQUFBYmk4QXoxZ0FBQUQyUk1BRkFBQUFBQUFBQUFEb0tVd0FBQURRWERFQlFETmhBZ0FBQUg0bDRBSUFBQUFBQUFBQUFIUTFUSFcyQWdBQVFQUGJhN1FDd09MUFZwOXJBUUFBOENZQkZ3QUFBQUFBQUFBQW9MY3dBUUFBZ05zTHdMTVZBQUNBdlJCd0FRQUFBQUFBQUFBQWVnc1RBQUFBTkZkTUFMQzRNQUVBQUFCdkVYQUJBQUFBQUFBQUFBQzZHNlk2V3dFQUFLRDU3VFZhQVdDeFo2clBzd0FBQUhpWGdBc0FBQUFBQUFBQUFBQUFBTUEraFFrQVBGTUJBQUJvVDhBRkFBQUFBQUFBQUFCWVF6RUJBQUNBMnd2Z2dZUUpBQUFBZUkrQUN3QUFBQUFBQUFBQXNJcGhxcU1WQUFBQTNGNEFEL0FzbmEwQUFBREFSd1JjQUFBQUFBQUFBQUNBdFlRSkFBQUFtaXNtQUxoYm1BQUFBSUNQQ0xnQUFBQUFBQUFBQUFCcktTWUFBQUJvTGt3QTRGa0tBQUJBV3dJdUFBQUFBQUFBQUFBQUFBQUFPelpNZGJZQ2dHY29BQUFBN1FpNEFBQUFBQUFBQUFBQXEvRUZHQUFBZ0M3Q0JBQnB4UVFBQUFCOFJzQUZBQUFBQUFBQUFBQllVNWdBQUFEQTdRV3dSY05VUnlzQUFBQndEUUVYQUFBQUFBQUFBQUJnVFdFQ0FBQ0E5b2FwemxZQXVGbVlBQUFBZ0dzSXVBQUFBQUFBQUFBQUFLdnlTOFlBQUFCZGhBa0FibFpNQUFBQXdEVUVYQUFBQUFBQUFBQUFnTFdGQ1FBQUFOeGVBRnNpT2d3QUFNQXRCRndBQUFBQUFBQUFBSUMxRlJNQUFBQzBOMHgxdGdMQTFjSUVBQUFBWEV2QUJRQUFBQUFBQUFBQUFBQUE0QmpDQkFCWEt5WUFBQURnV2dJdUFBQUFBQUFBQUFEQTZ2d0tQQUFBUUJkaEFvRFBEVk1kclFBQUFNQXRCRndBQUFBQUFBQUFBQUFBQUFBT1FrQVQ0Q3BoQWdBQUFHNGg0QUlBQUFBQUFBQUFBR3hCTVFFQUFFQVhZUUtBVHhVVEFBQUFjQXNCRndBQUFBQUFBQUFBQUFBQWdPTUlFd0M4YjVqcWFBVUFBQUJ1SmVBQ0FBQUFBQUFBQUFCc3dqRFYyUW9BQUFEdUw0Q1ZoUWtBQUFDNGxZQUxBQUFBQUFBQUFBQ3dGV0VDQUFBQTl4ZkF5b29KQUFBQXVKV0FDd0FBQUFBQUFBQUFzQlZoQWdBQUFQY1h3RnFHcVk1V0FBQUFJRVBBQlFBQUFBQUFBQUFBMkF4ZmtnRUFBT2gyZjgxV0FIZ2xUQUFBQUVDR2dBc0FBQUFBQUFBQUFMQWxZUUlBQUFEM0Y4QktpZ2tBQUFESUVIQUJBQUFBQUFBQUFBQzJKRXdBQUFEZy9nTG9iWmpxYUFVQUFBQ3lCRndBQUFBQUFBQUFBSUF0Q1JNQUFBRDBNVXgxdGdMQVQyRUNBQUFBc2dSY0FBQUFBQUFBQUFDQVRmRnJ4d0FBQU4yRUNRQitLaVlBQUFBZ1M4QUZBQUFBQUFBQUFBRFltakFCQUFDQSt3dWdGMEZoQUFBQTdpWGdBZ0FBQUFBQUFBQUFiRTJZQUFBQW9JOWhxck1WQUh3ZUJRQUF3SDBFWEFBQUFBQUFBQUFBZ0swSkV3QUFBTGpCQURvcUpnQUFBT0FlQWk0QUFBQUFBQUFBQUFBQUFBREhGU1lBam15WTZtZ0ZBQUFBN2lYZ0FnQUFBQUFBQUFBQWJNNHcxZGtLQUFBQWJqQ0FEc0lFQUFBQTNFdkFCUUFBQUFBQUFBQUFBQUFBNE5qQ0JNQ0JGUk1BQUFCd0x3RVhBQUFBQUFBQUFBQmdpNG9KQUFBQXVna1RBRWMwVEhXMEF2OWg1dzV1SXdpQktBcUdRaWpUSVpFQnBOYVorV1RMa20xNUQ0QllxQXJoSFZwaXBQa0FBQUFqR0hBQkFBQUFBQUFBQUFBQUFBQzRYS25aVkFBdUZCSUFBQUF3Z2dFWEFBQUFBQUFBQUFCZ1MzNGVCQUFBV0Nva0FDN1VKUUFBQUdBRUF5NEFBQUFBQUFBQUFBQUFBQUNFQk1CTlNzMUhCUUFBQUVZeDRBSUFBQUFBQUFBQUFPd3FKQUFBQUZpbjFHd3FBQmNKQ1FBQUFCakZnQXNBQUFBQUFBQUFBTENya0FBQUFNQTdER0NTTGdFQUFBQ2pHSEFCQUFBQUFBQUFBQUMyVldvK0tnQUFBQ3dURWdBMzhNMEpBQUNBMFF5NEFBQUFBQUFBQUFBQU93c0pBQUFBMWlrMW13ckFCVUlDQUFBQVJqTGdBZ0FBQUFBQUFBQUFBQUFBd0tlUUFMaEFsd0FBQUlDUkRMZ0FBQUFBQUFBQUFBQTc2eElBQUFBc0ZSSUFKeXMxSHhVQUFBQVl6WUFMQUFBQUFBQUFBQUFBQUFBQVgwck5wZ0p3c0pBQUFBQ0EwUXk0QUFBQUFBQUFBQUFBVy9QaklBQUF3SEloQVhDd0xnRUFBQUNqR1hBQkFBQUFBQUFBQUFBQUFBRGd1NUFBT0ZHcCthZ0FBQURBREFaY0FBQUFBQUFBQUFDQTNZVUVBQUFBYTVXYVRRWGdRQ0VCQUFBQU14aHdBUUFBQUFBQUFBQUFkaGNTQUFBQUxOY2xBTncyQUFBQWVJMEJGd0FBQUFBQUFBQUFBQUFBQUg0b05SOFZBRGNOQUFBQS9tZkFCUUFBQUFBQUFBQUEyRjZwMlZRQUFBQllMaVFBRHRJbEFBQUFZQllETGdBQUFBQUFBQUFBQUFBQUFQeW1Td0FjSkNRQUFBQmdGZ011QUFBQUFBQUFBQURBT3dnSkFBQUExaXMxSHhXQUEyNVpVd0VBQUlDWkRMZ0FBQUFBQUFBQUFBRHZJQ1FBQUFEd0hnTnd5d0FBQU5pUkFSY0FBQUFBQUFBQUFBQUFBQUQrMGlVQURoQVNBQUFBTU5PSEFPemMwWkViTnhhRzBWcVY4OEJHWWlBa2JBUU5SdUFPaVhBazdraTBYbXRka3FYUkRPY095VzZnejNueCsxY1hVMnlYNmpmZ0FnQUFBQUFBQUFBQURDSFZ2cWdBQUFDd3kvZFlWZ0VZK0crWS82Y0VBQURBd3hsd0FRQUFBQUFBQUFBQUFBQUE0RFZGQXNEZk1BQUFBUGc1QXk0QUFBQUFBQUFBQUFBQUFBQzhwa2tBREt4SUFBQUF3S01aY0FFQUFBQUFBQUFBQUViUkpBQUFBTmhIcWoyckFBejR0MnRSQVFBQWdHY3c0QUlBQUFBQUFBQUFBQUFBQU1CYmlnUUFBQUFBOExKL2ZmNzhXUVVBQUFBQUFBQUFBQUFBQUFBQUFBQUFnSUJQRWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBeEJod0FRQUFBQUFBQUFBQUFBQUFBQUFBQUFBSU11QUNBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQmt3QVVBQUFBQUFBQUFBQUFBQUFBQUFBQUFJTWlBQ3dBQUFBQUFBQUFBQUFBQUFBQUFBQUJBa0FFWEFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBZ0F5NEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFRUdYQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnZ3k0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFR1hBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFneTRBSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVHVEFCUUFBQUFBQUFBQUFBQUFBQUFBQUFBQWd5SUFMQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUNRQVJjQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0NBRExnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFRWmNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0NETGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFaY0FFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0RMZ0FnQUFBQUFBQUFBQUFBQUFBQUFBQUFBUVpNQUZBQUFBQUFBQUFBQUFBQUFBQUFBQUFDRElnQXNBQUFBQUFBQUFBQUFBQUFBQUFBQUFRSkFCRndBQUFBQUFBQUFBQUFBQUFBQUFBQUNBSUFNdUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQkJsd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFJSU11QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQmx3QVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJTXVBQ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUJCa3dBVUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlNaUFDd0FBQUFBQUFBQUFBQUFBQUFBQUFBQkFrQUVYQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFnQXk0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVFR1hBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdneTRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVHWEFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWd5NEFJQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUdUQUJRQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ3lJQUxBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQ1FBUmNBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQ0FETGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUVFaY0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQ0RMZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUVpjQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFDRExnQWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFRWk1BRkFBQUFBQUFBQUFBQUFBQUFBQUFBQUNESWdBc0FBQUFBQUFBQUFBQUFBQUFBQUFBQVFKQUJGd0FBQUFBQUFBQUFBQUFBQUFBQUFBQ0FJQU11QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJCQmx3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlJTXVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJCbHdBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlNdUFDQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkJrd0FVQUFBQUFBQUFBQUFBQUFBQUFBQUFBSU1pQUN3QUFBQUFBQUFBQUFBQUFBQUFBQUFCQWtBRVhBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQWdBeTRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUVHWEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ2d5NEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUdYQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ3k0QUlBQUFBQUFBQUFBQUFBQUFBQUFBQUFFR1RBQlFBQUFBQUFBQUFBQUFBQUFBQUFBQUFneUlBTEFBQUFBQUFBQUFBQUFBQUFBQUFBQUVDUUFSY0FBQUFBQUFBQUFBQUFBQUFBQUFBQWdDQURMZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFRUVpjQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNDRExnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFRWmNBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNETGdBZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQVFaTUFGQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0RJZ0FzQUFBQUFBQUFBQUFBQUFBQUFBQUFBUUpBQkZ3QUFBQUFBQUFBQUFBQUFBQUFBQUFDQUlBTXVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkJCbHdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUlNdUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkJsd0FRQUFBQUFBQUFBQUFBQUFBQUFBQUFBSU11QUNBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQmt3QVVBQUFBQUFBQUFBQUFBQUFBQUFBQUFJTWlBQ3dBQUFBQUFBQUFBQUFBQUFBQUFBQUJBa0FFWEFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBZ0F5NEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFRUdYQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnZ3k0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFR1hBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFneTRBSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVHVEFCUUFBQUFBQUFBQUFBQUFBQUFBQUFBQWd5SUFMQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUNRQVJjQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0NBRExnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFRWmNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0NETGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFaY0FFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0RMZ0FnQUFBQUFBQUFBQUFBQUFBQUFBQUFBUVpNQUZBQUFBQUFBQUFBQUFBQUFBQUFBQUFDRElnQXNBQUFBQUFBQUFBQUFBQUFBQUFBQUFRSkFCRndBQUFBQUFBQUFBQUFBQUFBQUFBQUNBSUFNdUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQkJsd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFJSU11QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQmx3QVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJTXVBQ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUJCa3dBVUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlNaUFDd0FBQUFBQUFBQUFBQUFBQUFBQUFBQkFrQUVYQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFnQXk0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVFR1hBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdneTRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVHWEFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWo2UlFLQTgvajNmMzVmVkFCNHV1c2Z2LzNhWlFBQWZIY0M4S2p2em0zTnZqc0I3aURWbnYvOFQxRUN3RzlsQUw5akFRREc4K2MzNEVVRjJQMzd4TDhiQVFENHpoKy8vZXBiQmVCRURMZ0FuRXVUQUdDWHY3MytjVEFBNExzVEFOK2RBTWRYL0tZRjhGc1p3TzlZQUlBeHBkcU51TUMrYnpEN05nRUFlSkh2RklBVCtTUUJBQUFBQUFBQUFBQUFBQUFBQXlzU2dEY0lBQUFBZXpMZ0FnQUFBQUFBQUFBQUFBQUF3TWlLQkxDckpnRUFBQUJuWjhBRkFBQUFBQUFBQUFBQUFBQ0FvYVhhRnhYQTJ3TUFBSUM5R0hBQkFBQUFBQUFBQUFBQUFBQmdkRTBDMkVXUkFBQUFBQXk0QUFBQUFBQUFBQUFBQUFBQU1JRlVlMVlCbnE1SUFBQUFBQVpjQUFBQUFBQUFBQUFBQUFBQW1FT1JBSjRuMWI2b0FBQUFBRjhZY0FFQUFBQUFBQUFBQUFBQUFHQUdUUUo0cWlJQkFBQUFmR0hBQlFBQUFBQUFBQUFBQUFBQWdDbWsyck1LOExTM1ZwUUFBQUNBTHd5NEFBQUFBQUFBQUFBQUFBQUFNSXNtQVR4RmtRQUFBQUMrTXVBQ0FBQUFBQUFBQUFBQUFBREFMSW9FOEJSTkFnQUFBUGpLZ0FzQUFBQUFBQUFBQUFBQUFBRFRTTFV2S3NCRDMxaFdBUUFBQVA3SmdBc0FBQUFBQUFBQUFBQUFBQUF6S1JLQU53WUFBQURQWk1BRkFBQUFBQUFBQUFDWXlyYm1pd29BQUFDblZpU0FoMm9TQUFBQXdEOFpjQUVBQUFBQUFBQUFBQUFBQUdBcXFmWkZCZkMyQUFBQTRGa011QUFBQUFBQUFBQUFBQUFBQURDYkpnRThSSkVBQUFBQWZtVEFCUUFBQUFBQUFBQUFBQUFBZ09tazJyTUtjSGRGQWdBQUFQaVJBUmNBQUFBQUFBQUFBQUFBQUFCbVZDU0ErMG0xTHlvQUFBREF5d3k0QUFBQUFBQUFBQUFBQUFBQU1LTW1BZHhWa1FBQUFBQmVac0FGQUFBQUFBQUFBQUNZeVZVQ0FBQUEvcFpxenlyQTNkNVNVUUlBQUFCZVpzQUZBQUFBQUFBQUFBQ1l5VlVDQUFBQXZ0RWtnTHNvRWdBQUFNRFBHWEFCQUFBQUFBQUFBQUFBQUFCZ1ZrVUN1SXNtQVFBQUFQeWNBUmNBQUFBQUFBQUFBQUFBQUFDbWxXcGZWSUFQdmFHc0FnQUFBTHpPZ0FzQUFBQUFBQUFBQUFBQUFBQXpLeEtBTndRQUFBQ1BaTUFGQUFBQUFBQUFBQUFBQUFDQW1SVUo0RU9hQkFBQUFQQTZBeTRBQUFBQUFBQUFBTUEwdGpWZlZBQUFBT0I3cWZaRkJmQjJBQUFBNEZFTXVBQUFBQUFBQUFBQUFBQUFBREM3SmdHRUZBa0FBQURnYlFaY0FBQUFBQUFBQUFBQUFBQUFtRjZxUGFzQTcxWWtBQUFBZ0xjWmNBRUFBQUFBQUFBQUFBQUFBT0FNaWdSd3UxVDdvZ0lBQUFEY3hvQUxBQUFBQUFBQUFBQXdpeVlCQUFBQXZodmhib29FQUFBQWNCc0RMZ0FBQUFBQUFBQUFBQUFBQUp4Q3FqMnJBRGUvbGFJRUFBQUEzTWFBQ3dBQUFBQUFBQUFBQUFBQUFHZlJKSUNiRkFrQUFBRGdkZ1pjQUFBQUFBQUFBQUFBQUFBQU9Jc2lBZHlrU1FBQUFBQzNNK0FDQUFBQUFBQUFBQUJNWVZ2elJRVUFBQURla21wZlZJQlgzMGhXQVFBQUFON0hnQXNBQUFBQUFBQUFBQUFBQUFCblVpU0FWelVKQUFBQTRIME11QUFBQUFBQUFBQUFBQUFBQUhBbVJRTHdSZ0FBQU9DZURMZ0FBQUFBQUFBQUFBQXp1RW9BQUFEQXJWTHRpd3JnYlFBQUFNQzlHSEFCQUFBQUFBQUFBQUJtY0pVQUFBQ0FkMmdTd0l1S0JBQUFBUEIrQmx3QUFBQUFBQUFBQUFBQUFBQTRuVlI3VmdGK1VDUUFBQUNBOXpQZ0FnQUFBQUFBQUFBQUFBQUF3QmtWQ2VDclZQdWlBZ0FBQU1RWWNBRUFBQUFBQUFBQUFJYTNyZm1pQWdBQUFPL1VKQUJ2QWdBQUFPN0JnQXNBQUFBQUFBQUFBQUFBQUFDbmxHclBLb0MzQUFBQUFCOWx3QVVBQUFBQUFBQUFBQUFBQUlDemFoTEFYNG9FQUFBQUVHZkFCUUFBQUFBQUFBQUFHRjJUQUFBQWdLQWlBZnlsU1FBQUFBQnhCbHdBQUFBQUFBQUFBQUFBQUFBNHJWVDdvZ0luZndOWkJRQUFBUGdZQXk0QUFBQUFBQUFBQUFBQUFBQ2NXWkdBazJzU0FBQUF3TWNZY0FFQUFBQUFBQUFBQUlhMnJmbWlBZ0FBQUI5UUpNQWJBQUFBQUQ3Q2dBc0FBQUFBQUFBQUFBQUFBQUNubG1wZlZNRHRBd0FBQUZFR1hBQUFBQUFBQUFBQUFBQUFBRGk3SmdFblZTUUFBQUNBanpQZ0FnQUFBQUFBQUFBQWpLeEpBQUFBd0QyazJyTUtuRkNSQUFBQUFEN09nQXNBQUFBQUFBQUFBQUFBQUFBWXN1QmtVdTJMQ2dBQUFIQWZCbHdBQUFBQUFBQUFBSUNSWFNVQUFBRGdUcG9FdUhrQUFBQWd3b0FMQUFBQUFBQUFBQUF3ckczTlhRVUFBQUR1SmRXZVZjQ3RBd0FBQU85bHdBVUFBQUFBQUFBQUFBQUFBQUMrYUJKd0VrVUNBQUFBdUI4RExnQUFBQUFBQUFBQXdLaWFCQUFBQU54WmtZQ1RhQklBQUFEQS9SaHdBUUFBQUFBQUFBQUFBQUFBZ1A5THRTOHFNUG1OWnhVQUFBRGd2Z3k0QUFBQUFBQUFBQUFBbzdwS0FBQUF3QU1VQ1poY2t3QUFBQUR1eTRBTEFBQUFBQUFBQUFBd3BHM05YUVVBQUFBZW9FaUFHd2NBQUFEZXc0QUxBQUFBQUFBQUFBQUFBQUFBZkNQVnZxaUEyd1lBQUFCdVpjQUZBQUFBQUFBQUFBQVlVWk1BQUFBQTM1M3dia1VDQUFBQXVEOERMZ0FBQUFBQUFBQUFBQUFBQVBDZFZIdFdnUWtWQ1FBQUFPRCtETGdBQUFBQUFBQUFBQUFqdWtvQUFBREFneFVKbUVtcWZWRUJBQUFBSHNPQUN3QUFBQUFBQUFBQU1KeHR6VjBGQUFBQUhxeEpnSnNHQUFBQWJtSEFCUUFBQUFBQUFBQUFHTTFWQWdBQUFKNGgxWjVWd0MwREFBQUFiekhnQWdBQUFBQUFBQUFBak9ZcUFRQUFBRS9TSkdBU1JRSUFBQUI0SEFNdUFBQUFBQUFBQUFBQUFBQUE4TElpQVpOb0VnQUFBTURqR0hBQkFBQUFBQUFBQUFDR3NxMzVvZ0lBQUFEUGttcGZWR0R3Rzg0cUFBQUF3R01aY0FFQUFBQUFBQUFBQUFBQUFJQ2ZLeEl3dUNZQkFBQUFQSllCRndBQUFBQUFBQUFBWUNSTkFnQUFBSjZzU0lBYkJnQUFBRjVqd0FVQUFBQUFBQUFBQUFBQUFBQmVrV3BmVk1EdEFnQUFBRDlqd0FVQUFBQUFBQUFBQUJqR3R1YUxDZ0FBQU95Z1NjQ2dpZ1FBQUFEd2VBWmNBQUFBQUFBQUFBQUFBQUFBNEEycDlxd0NBOTVzVVFJQUFBQWV6NEFMQUFBQUFBQUFBQUF3aWlZQkFBQUFPeW9TNEdZQkFBQ0FseGh3QVFBQUFBQUFBQUFBQUFBQWdMYzFDWEN6QUFBQXdFc011QUFBQUFBQUFBQUFBRVBZMW54UkFRQUFnRDJsMnJNS3VGVUFBQURnZXdaY0FBQUFBQUFBQUFBQUFBQUE0RFpOQWdaUkpBQUFBSURuTWVBQ0FBQUFBQUFBQUFDTW9Fa0FBQURBQVJRSkdFU1RBQUFBQUo3SGdBc0FBQUFBQUFBQUFBQUFBQURjS05XK3FJQWJCUUFBQUw1bHdBVUFBQUFBQUFBQUFEaThiYzBYRlFBQUFEaUlJZ0Z1RkFBQUFQaVdBUmNBQUFBQUFBQUFBQUFBQUFDNFhaRUFOd29BQUFCOHk0QUxBQUFBQUFBQUFBQndkRTBDQUFBQWppVFZ2cWlBMndRQUFBRCtac0FGQUFBQUFBQUFBQUFBQUFBQTNxZEp3RUVWQ1FBQUFPRDVETGdBQUFBQUFBQUFBQUNIdHEzNW9nSUFBQUJIazJyUEtuREFteXhLQUFBQXdQTVpjQUVBQUFBQUFBQUFBQUFBQUlEM0t4TGdKZ0VBQUlEL01lQUNBQUFBQUFBQUFBQWNXWk1BQUFBQTM2emdKZ0VBQU9ESURMZ0FBQUFBQUFBQUFBQkhkcFVBQUFDQW8wcTFaeFZ3aXdBQUFJQUJGd0FBQUFBQUFBQUE0TEMyTlhjVkFBQUFPTEFtQVFkUkpBQUFBSUQ5R0hBQkFBQUFBQUFBQUFDTzZpb0JBQUFBQjFjazRDQ2FCQUFBQUxBZkF5NEFBQUFBQUFBQUFNQlJYU1VBQUFEZzZGTHRpd3E0UVFBQUFEZzNBeTRBQUFBQUFBQUFBTUFoYld1K3FBQUFBTUFBaWdTNFFRQUFBRGczQXk0QUFBQUFBQUFBQUFBQUFBQVFWeVRBRFFJQUFNQzUvU0lCQUFBQUFBREF1Rkx0SWdBQU1Lc21nVzhPQUFDQWdiNmZsbTNORnlYWTQvWlVBQUFBZ1AxOWtnQUFBQUFBQUFBQUFEaWdxd1FBQUFBTXBFbkFUb29FQUFBQXNEOERMZ0FBQUFBQUFBQUF3T0ZzYSs0cUFBQUFNSkpVZTFhQkhXNnVLQUVBQUFEN00rQUNBQUFBQUFBQUFBQWN6VlVDQUFBQUJsUWt3TTBCQUFEQU9SbHdBUUFBQUFBQUFBQUFqdVlxQVFBQUFBTnFFdURtQUFBQTRKd011QUFBQUFBQUFBQUFBSWV5cmZtaUFnQUFBQ05LdFdjVmNHc0FBQUJ3UGdaY0FBQUFBQUFBQUFDQUk3bEtBQUFBd01DYUJEeEprUUFBQUFDT3c0QUxBQUFBQUFBQUFBQndKRmNKQUFBQUdGaVJnQ2RwRWdBQUFNQnhHSEFCQUFBQUFBQUFBQUNPNUNvQkFBQUFJMHUxTHlyZ3hnQUFBT0JjRExnQUFBQUFBQUFBQUFDSHNhMjVxd0FBQU1EZ2lnUzRNUUFBQURnWEF5NEFBQUFBQUFBQUFNQlJOQWtBQUFDWVFKRUFOd1lBQUFEbllzQUZBQUFBQUFBQUFBQTRpcXNFQUFBQXpDRFZ2cWlBMndJQUFJRHpNT0FDQUFBQUFBQUFBQUFjd3JibXJnSUFBQUNUYUJMd0lFVUNBQUFBT0I0RExnQUFBQUFBQUFBQXdCRTBDUUFBQUpoSnFqMnJ3QU51cWlnQkFBQUF4MlBBQlFBQUFBQUFBQUFBT0lLckJBQUFBRXltU0lDYkFnQUFnSE13NEFJQUFBQUFBQUFBQU94dVczTlhBUUFBZ01rMENYQlRBQUFBY0E0R1hBQUFBQUFBQUFBQWdMMDFDUUFBQUpoUnFqMnJnRnNDQUFDQStSbHdBUUFBQUFBQUFBQUE5bmFWQUFBQWdFazFDWEJMQUFBQU1EOERMZ0FBQUFBQUFBQUF3SzYyTlhjVkFBQUFtRlNSQUxjRUFBQUE4elBnQWdBQUFBQUFBQUFBN0tsSkFBQUF3TXhTN1lzS3VDRUFBQUNZbXdFWEFBQUFBQUFBQUFCZ1QxY0pBQUFBbUZ5UkFEY0VBQUFBY3pQZ0FnQUFBQUFBQUFBQTdHWmJjMWNCQUFDQS83SjNOMFp1RzNjWWh5bU4rb0FyQ2ZZNmdpdmdzZ0t6Skt3ck1TdFJlTmJGc1VTSlBQNFBIN3ZBODh4d0pySHVBM2loWVFCRjkvUEdKUlBnOXhBQUFBQnNtNEFMQUFBQUFBQUFBQUN3bG13Q0FBQUE5cUFieXRFSytMMERBQUFBMi9YcDY5ZXZWZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFDUGhzQWdBQUFBQUFBQUFBQUFBQUFBQUFBQUNBR0FFWEFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBZ0FSY0FBQUFBQUFBQUFBQUFBQUFBQUFBQWdDQUJGd0FBQUFBQUFBQUFBQUFBQUFBQUFBQ0FJQUVYQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFnQVJjQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0NBQkZ3QUFBQUFBQUFBQUFBQUFBQUFBQUFDQUlBRVhBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQWdBUmNBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQ0FCRndBQUFBQUFBQUFBQUFBQUFBQUFBQUNBSUFFWEFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBZ0FSY0FBQUFBQUFBQUFBQUFBQUFBQUFBQWdDQUJGd0FBQUFBQUFBQUFBQUFBQUFBQUFBQ0FJQUVYQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFnQVJjQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0NBQkZ3QUFBQUFBQUFBQUFBQUFBQUFBQUFDQUlBRVhBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQWdBUmNBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQ0FCRndBQUFBQUFBQUFBQUFBQUFBQUFBQUNBSUFFWEFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBZ0FSY0FBQUFBQUFBQUFBQUFBQUFBQUFBQWdDQUJGd0FBQUFBQUFBQUFBQUFBQUFBQUFBQ0FJQUVYQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFnQVJjQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0NBQkZ3QUFBQUFBQUFBQUFBQUFBQUFBQUFDQUlBRVhBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQWdBUmNBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQ0FCRndBQUFBQUFBQUFBQUFBQUFBQUFBQUNBSUFFWEFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBZ0FSY0FBQUFBQUFBQUFBQUFBQUFBQUFBQWdDQUJGd0FBQUFBQUFBQUFBQUFBQUFBQUFBQ0FJQUVYQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFnQVJjQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0NBQkZ3QUFBQUFBQUFBQUFBQUFBQUFBQUFDQUlBRVhBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQWdBUmNBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQ0FCRndBQUFBQUFBQUFBQUFBQUFBQUFBQUNBSUFFWEFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBZ0FSY0FBQUFBQUFBQUFBQUFBQUFBQUFBQWdDQUJGd0FBQUFBQUFBQUFBQUFBQUFBQUFBQ0FJQUVYQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFnQVJjQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0NBQkZ3QUFBQUFBQUFBQUFBQUFBQUFBQUFDQUlBRVhBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQWdBUmNBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQ0FCRndBQUFBQUFBQUFBQUFBQUFBQUFBQUNBSUFFWEFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBZ0FSY0FBQUFBQUFBQUFBQUFBQUFBQUFBQWdDQUJGd0FBQUFBQUFBQUFBQUFBQUFBQUFBQ0FJQUVYQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFnQVJjQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0NBQkZ3QUFBQUFBQUFBQUFBQUFBQUFBQUFDQUlBRVhBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQWdBUmNBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQ0FCRndBQUFBQUFBQUFBQUFBQUFBQUFBQUNBSUFFWEFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBZ0FSY0FBQUFBQUFBQUFBQUFBQUFBQUFBQWdDQUJGd0FBQUFBQUFBQUFBQUFBQUFBQUFBQ0FJQUVYQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFnQVJjQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0NBQkZ3QUFBQUFBQUFBQUFBQUFBQUFBQUFDQUlBRVhBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQWdBUmNBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQ0FCRndBQUFBQUFBQUFBQUFBQUFBQUFBQUNBSUFFWEFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBZ0FSY0FBQUFBQUFBQUFBQUFBQUFBQUFBQWdDQUJGd0FBQUFBQUFBQUFBQUFBQUFBQUFBQ0FJQUVYQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFnQVJjQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0NBQkZ3QUFBQUFBQUFBQUFBQUFBQUFBQUFDQUlBRVhBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQWdBUmNBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQ0FCRndBQUFBQUFBQUFBQUFBQUFBQUFBQUNBSUFFWEFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBZ0FSY0FBQUFBQUFBQUFBQUFBQUFBQUFBQWdDQUJGd0FBQUFBQUFBQUFBQUFBQUFBQUFBQ0FJQUVYQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFnQVJjQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0NBQkZ3QUFBQUFBQUFBQUFBQUFBQUFBQUFDQUlBRVhBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQWdBUmNBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQ0FCRndBQUFBQUFBQUFBQUFBQUFBQUFBQUNBSUFFWEFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBZ0FSY0FBQUFBQUFBQUFBQUFBQUFBQUFBQWdDQUJGd0FBQUFBQUFBQUFBQUFBQUFBQUFBQ0FJQUVYQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFnQVJjQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0NBQkZ3QUFBQUFBQUFBQUFBQUFBQUFBQUFDQUlBRVhBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQWdBUmNBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQ0FCRndBQUFBQUFBQUFBQUFBQUFBQUFBQUNBSUFFWEFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBZ0FSY0FBQUFBQUFBQUFBQUFBQUFBQUFBQWdDQUJGd0FBQUFBQUFBQUFBQUFBQUFBQUFBQ0FJQUVYQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFnQVJjQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0NBQkZ3QUFBQUFBQUFBQUFBQUFBQUFBQUFDQUlBRVhBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQWdBUmNBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQ0FCRndBQUFBQUFBQUFBQUFBQUFBQUFBQUNBSUFFWEFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBZ0FSY0FBQUFBQUFBQUFBQUFBQUFBQUFBQWdDQUJGd0FBQUFBQUFBQUFBQUFBQUFBQUFBQ0FJQUVYQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFnQVJjQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0NBQkZ3QUFBQUFBQUFBQUFBQUFBQUFBQUFDQW9DOG1BTmlQMzM3Lzg2c1ZBQmFYLy9yalB5Y3pBQUNlT3dFQUFJQ1orUDhpQUhic3Q5Ly9QTDcrYjRFbEFBQ1lRTDZjZTMvRzhJTnVLUDR1QkFBQVlYLzk4WjlQVmdEWWo4OG1BQUFBQUFBQUFBQ0FOdm5CS2dBQUFHQWl5UVRmNjRaeXRBSUFBQUR3WGdJdUFBQUFBQUFBQUFEUXBtd0NBQUFBWUNLcEcwcHZodTgzTVFFQUFBRHdYZ0l1QUFBQUFBQUFBQURRb011NVAxa0JBQUFBbUZBeXdUZHZNUnQ3QUFBQUFPOG00QUlBQUFBQUFBQUFBTzBaVFFBQUFBQk1MSnZnSDhrRUFBQUF3RE1FWEFBQUFBQUFBQUFBb0QzWkJBQUFBTURVdXFIMFZ2aGJOZ0VBQUFEd0RBRVhBQUFBQUFBQUFBQm95M2c1OThVTUFBQUF3QXpTM2djUXNRRUFBQUFpQkZ3QUFBQUFBQUFBQUtBdDJRUUFBQURBVExJSlJHd0FBQUNBNXdtNEFBQUFBQUFBQUFCQU84Ykx1UzltQUFBQUFPYlNEZVc0OHdteTN3VUFBQURBc3dSY0FBQUFBQUFBQUFDZ0hka0VBQUFBd016U1hrOWN2QVlBQUFDSUVuQUJBQUFBQUFBQUFJQTJqSmR6WDh3QUFBQUF6Q3c1ZHdBQUFJRG5DTGdBQUFBQUFBQUFBRUFETHVmK3hRb0FBQURBRXJxaEhIZDY2c25WQndBQUFDSUVYQUFBQUFBQUFBQUFvSDdaQkFBQUFNQ0MwdDVPZU1mUkdnQUFBR0FDQWk0QUFBQUFBQUFBQUZDNXk3ay9XUUVBQUFCWVVPcUcwdS90bkYxMkFBQUFJRXJBQlFBQUFBQUFBQUFBNnBaTkFBQUFBS3dnN2VWRTMySTF5U1VIQUFBQW9nUmNBQUFBQUFBQUFBQ2dYdVBsM0ovTUFBQUFBS3dnNytoY2s4c05BQUFBZklTQUN3QUFBQUFBQUFBQTFDdWJBQUFBQUZoTE41UitKNmVhWFcwQUFBRGdJd1JjQUFBQUFBQUFBQUNnVHVQbDNCY3pBQUFBQUN0S1d6L0JIVVZxQUFBQWdCa0p1QUFBQUFBQUFBQUFRSjJ5Q1FBQUFJQ1Y1UjJjWTNLWkFRQUFnSThTY0FFQUFBQUFBQUFBZ1Bya3k3a3ZaZ0FBQUFEVzFnM2x1UEZUeks0eUFBQUE4RkVDTGdBQUFBQUFBQUFBVUpmeGN1NVBaZ0FBQUFBcWtiWjZZanVJMHdBQUFBQUxFWEFCQUFBQUFBQUFBSUM2WkJNQUFBQUFGVW5PRFFBQUFPQStBUmNBQUFBQUFBQUFBS2pIZURuM3hRd0FBQUJBVGJxaEhEZDZhc25WQlFBQUFLWWc0QUlBQUFBQUFBQUFBSlc0blBzWEt3QUFBQUFWU2xzN29RMUhhUUFBQUlBVkNMZ0FBQUFBQUFBQUFFQWRrZ2tBQUFDQVNxVnVLUDNXenNsbEJRQUFBS1lpNEFJQUFBQUFBQUFBQU9zYkwrZSttQUVBQUFDb1dOcktpYnpGYUpKTENnQUFBRXhGd0FVQUFBQUFBQUFBQUZaMk9mY3ZWZ0FBQUFBcWx6ZDBMc25sQkFBQUFLWWs0QUlBQUFBQUFBQUFBT3RLSmdBQUFBQmEwQTJsMzhpcFpGY1RBQUFBbUpLQUN3QUFBQUFBQUFBQXJHZThuUHRpQmdBQUFLQVJxZlVUMkZDRUJnQUFBS2lJZ0FzQUFBQUFBQUFBQUt6a2N1NWZyQUFBQUFBMEpHL2dISkxMQ0FBQUFFeE53QVVBQUFBQUFBQUFBTmFSVEFBQUFBQzBwaHZLc2ZGVHlLNGlBQUFBTURVQkZ3QUFBQUFBQUFBQVdONTRPZmZGREFBQUFFQ0RVcXNIdm9INERBQUFBRkFwQVJjQUFBQUFBQUFBQUZqV2E3emx4UXdBQUFCQW81SmpCd0FBQVBpZWdBc0FBQUFBQUFBQUFDd3Jtd0FBQUFCb1dUZVVZNk9Ibmx3OUFBQUFZQTRDTGdBQUFBQUFBQUFBc0p4ME9mZkZEQUFBQUVEalVtc0gzSEIwQmdBQUFHaUFnQXNBQUFBQUFBQUFBQ3hqRkc4QkFBQUFOaUoxUStsYk8yYVhEUUFBQUppTGdBc0FBQUFBQUFBQUFDemdjdTVmckFBQUFBQnNTSEs4QUFBQUFOOEl1QUFBQUFBQUFBQUF3UHlTQ1FBQUFJQ055YTBjYURlVW84c0ZBQUFBekVuQUJRQUFBQUFBQUFBQTVwVXY1NzZZQVFBQUFOaWFiaWg5STRlYVhTMEFBQUJnVGdJdUFBQUFBQUFBQUFBd24vRnk3azltQUFBQUFEWXExMzZBRFVWbUFBQUFnSVlKdUFBQUFBQUFBQUFBd0R4ZTR5MHZaZ0FBQUFBMkxEbEdBQUFBQUFFWEFBQUFBQUFBQUFDWVN6WUJBQUFBc0hYZFVJNlZIMkoybFFBQUFJQzVDYmdBQUFBQUFBQUFBTUQwMHVYY0Z6TUFBQUFBTzVCcVBiQnVLTDNMQXdBQUFDeEJ3QVVBQUFBQUFBQUFBS1kxaXJjQUFBQUFPNUlxUHJiczhnQUFBQUJMRUhBQkFBQUFBQUFBQUlEcHZNWmJYc3dBQUFBQTdFazNsR09saDVaY0hRQUFBR0FKQWk0QUFBQUFBQUFBQURBUjhSWUFBQUJncDNKdEIxUnhWQVlBQUFEWUlBRVhBQUFBQUFBQUFBQ1lSaklCQUFBQXNGZmRVUHJLRGltNUtnQUFBTUJTQkZ3QUFBQUFBQUFBQU9EajB1WGNGek1BQUFBQU81WWNEd0FBQUxCWEFpNEFBQUFBQUFBQUFQQXhXYndGQUFBQTRKQnJPWkJ1S0VlWEF3QUFBRmlTZ0FzQUFBQUFBQUFBQU1TTmwzTi9NZ01BQUFEQTMrR1V2cEpEeWE0R0FBQUFzQ1FCRndBQUFBQUFBQUFBaUhtTnQ3eVlBUUFBQU9BZmVlMERxQ2dpQXdBQUFPeUlnQXNBQUFBQUFBQUFBQVNJdHdBQUFBRGNTSTRCQUFBQTJDTUJGd0FBQUFBQUFBQUFlRjR5QVFBQUFNQ3RiaWpIbFE4aHV3b0FBQURBMGdSY0FBQUFBQUFBQUFEZ09lbHk3b3NaQUFCZ3QwWVRBTnlWMXZyRzNWQjY4d080ZndVQWdEVUl1QUFBQUFBQUFBQUF3UHVKdHdBQUFLTUpBTzVLSzM3dmJINEE5NjhBQUxBR0FSY0FBQUFBQUFBQUFIaWZVYndGQUFDNE9wa0E0TDV1S01lVnZuV3lQb0Q3VndBQVdJT0FDd0FBQUFBQUFBQUFQUFlhYjNreEF3QUE4TDluQkJNQTNKV1gvb1lyUm1NQXZCOERBQUFDTGdBQUFBQUFBQUFBOElCNEN3QUE4S05zQW9EN3VxSDBDMy9MWkhXQUc2TUpBQUJnR1FJdUFBQUFBQUFBQUFEd2ErSXRBQURBenhRVEFEeVVOdjc5QU55M0FnQUEveEJ3QVFBQUFBQUFBQUNBWDhzbUFBQUFQQzhBMVAwKzJRM2xhRzRBOTZzQUFMQW1BUmNBQUFBQUFBQUFBUGk1ZERuMy91MmtBQURBcjR3bUFMaXZHMHEvMExmSzFnYTRjVElCQUFBc1I4QUZBQUFBQUFBQUFBQnVpYmNBQUFDUGVHWUFlQ3pQL1EwV2pNUUF0R1EwQVFBQUxFdkFCUUFBQUFBQUFBQUF2aWZlQWdBQXZGYzJBY0JkYVNQZkE2QTFvd2tBQUdCWkFpNEFBQUFBQUFBQUFQQi80aTBBQU1BelJoTUEzTmNONVRqenQ4aFdCcmh4TWdFQUFDeEx3QVVBQUFBQUFBQUFBTDRSYndFQUFKN2xHUUxnc1RUWEYrNkcwcHNYNEVZMkFRQUFMRS9BQlFBQUFBQUFBQUFBRG9kUnZBVUFBQWpLSmdDNEsza1BCbGpVYUFJQUFGaWVnQXNBQUFBQUFBQUFBSHYzR205NU1RTUFBQkIwTWdIQWZkMVFqak45NldSZGdCdGk1UUFBc0FJQkZ3QUFBQUFBQUFBQTlreThCUUFBbU9UWndnUUFkK1dwditDTVVSZ0E3N2NBQU1EVEJGd0FBQUFBQUFBQUFOZ3I4UllBQUdDeTV3c1RBTnpYRGFXZitFc21xd0xjT0prQUFBRFdJZUFDQUFBQUFBQUFBTUFlaWJjQUFBQlQ4b095QUkrbHlyOGVRT3RHRXdBQXdIb0VYQUFBQUFBQUFBQUEyQnZ4RmdBQVlKWm5EUk1BM0pXbitrTGRVSTdtQkhBL0NnQUFOUkZ3QVFBQUFBQUFBQUJnVDhSYkFBQ0EyWjQzVEFCd1h6ZVVmcUl2bGF3SmNPTmtBZ0FBV0krQUN3QUFBQUFBQUFBQWV5SGVBZ0FBek1rUHpBSThsai82QmQ0aU1NbVVBTk8rdndJQUFCOGo0QUlBQUFBQUFBQUF3QjZJdHdBQUFJczhlNWdBNEs1VXlkY0FjQjhLQUFCTVNzQUZBQUFBQUFBQUFJQ3RFMjhCQUFBV2UvNHdBY0I5M1ZDT0gvd1MyWW9BTi9lZ3hRd0FBTEF1QVJjQUFBQUFBQUFBQUxaTXZBVUFBRmpTeVFRQUQ2WG9KM1pENmMwSGNHTTBBUUFBckUvQUJRQUFBQUFBQUFDQXJSSnZBUUFBMXBCTkFIQlhXdWx6QWJaS1JCQUFBQ29nNEFJQUFBQUFBQUFBd0JhSnR3QUFBS3M5ajVnQTRMNXVLTWZncDJickFiajNCQUNBR24weEFRQUFBQUFBQUFBQUd5UGVBZ0FBek9iNnZQSG9RMG8zRkVNQjNKZXZyOU16bi9DQjZBdkFwdDlQMzNGL2VuQi9DZ0FBOC90c0FnQUFBQUFBQUFBQU5rUzhCUUFBcUVFMkFjQjkzVkQ2Sno4bFdRM2dlNWR6cjh3Q0FBQ1ZFSEFCQUFBQUFBQUFBR0FyeEZzQUFJQnFuazlNQVBCUW12bmpBYll1bXdBQUFPb2g0QUlBQUFBQUFBQUF3QmFJdHdBQUFOVzRQcDhVS3dBOGxOLzdnZDFRanVZQ3VER2FBQUFBNmlIZ0FnQUFBQUFBQUFCQTY4UmJBQUNBR21VVEFOelhEYVYvNTRjbWF3RjhaeFFOQkFDQXVnaTRBQUFBQUFBQUFBRFFNdkVXQUFDZzJ1Y1ZFd0E4bEI5OXdGdmtKWmtLd0wwbUFBRFVUTUFGQUFBQUFBQUFBSUJXaWJjQUFBRFZ1ajZ2bElNZnJBVjRKRTMwTVFCN3U5YzhXUUVBQU9vaTRBSUFBQUFBQUFBQVFJdkVXd0FBZ0NhZVhVd0FjRjgzbE9PREQ4bFdBbkNQQ1FBQXRSTndBUUFBQUFBQUFBQ2dOZUl0QUFCQUU2N1BMaWNyQUR5VWZ2VUwzVkI2OHdEY3lDWUFBSUQ2Q0xnQUFBQUFBQUFBQU5BUzhSWUFBS0M1NXhnVEFOeVZncjhHc0V1WGMxK3NBQUFBOVJGd0FRQUFBQUFBQUFDZ0ZlSXRBQUJBazg4eUpnQzRyeHZLOFJlL2xLMEQ0SDBSQUFCYUlPQUNBQUFBQUFBQUFFQUxzbmdMQUFEUW91dXp6TWtLQUEvbEgvL0JuYWdMd0o2TkpnQUFnRG9KdUFBQUFBQUFBQUFBVUx2a0J4NEJBSURHalNZQXVLOGJTdi9EUDBwV0Fmaitudkp5N29zWkFBQ2dUZ0l1QUFBQUFBQUFBQURVTFBrTDZRQUF3QWFNSmdCNEtEMzQ3d0R1S1FFQWdHcDlNUUVBQUFBQUFBQUFBSlZLMTFmcEJ2MFdBQUNnSHNGbmxOUDFsYTBIY0ZkK2U3OThmYTg5bWdQZzlwN1NuNWNEQUVDOVBwc0FBQUFBQUFBQUFJQUtwZXZMMzBRSEFBQzJaRFFCd0gzZFVQcTMvNWlzQWVCZUVnQUFXaUxnQWdBQUFBQUFBQUJBYmRKQnZBVUFBTmllYkFLQXgrK1ZieEdYWkFvQTk1SUFBTkFTQVJjQUFBQUFBQUFBQUdveFhsK2ZEdUl0QUFEQU5ubldBWGdzSGNSYkFOeExBZ0JBZ3dSY0FBQUFBQUFBQUFDb3dYaDl2WmdCQUFEWXVHd0NBTytWQU40WEFRQmdld1JjQUFBQUFBQUFBQUJZMjNnUWJ3RUFBUGJ6L0FNQUFPNGhBUUJnWXdSY0FBQUFBQUFBQUFCWTAzZ1Fid0VBQVBham1BQUFnQ2VNN2lFQkFLQU5BaTRBQUFBQUFBQUFBS3dsSDhSYkFBQ0FmVDRMQVFEQWU0d21BQUNBTm53eEFRQUFBQUFBQUFBQUswZ0gvOVpRQUFCZ24wWVRBQUR3VGljVEFBQkFHejZiQUFBQUFBQUFBQUNBaGFXRGVBc0FBTEJmbm9jQUFIaVAwUVFBQU5BT0FSY0FBQUFBQUFBQUFKYVVEbjVZRVFBQUlKc0FBQUQzakFBQXNCMENMZ0FBQUFBQUFBQUFMR0c4dmo0ZHhGc0FBQUJlblV3QUFNQUQvandkQUFBYUl1QUNBQUFBQUFBQUFNRGN4dXZyeFF3QUFBQTN6MG9BQVBBejJRUUFBTkFXQVJjQUFBQUFBQUFBQU9ZMEhzUmJBQUFBZnZXOEJBQUFQM015QVFBQXRFWEFCUUFBQUFBQUFBQ0F1YVNEZUFzQUFNQ3YrS0ZjQUFCK1pqUUJBQUMwUjhBRkFBQUFBQUFBQUlBNXBPdXJtQUVBQU9DdTBRUUFBTGhIQkFDQTlnbTRBQUFBQUFBQUFBQXdwZkVnM2dJQUFQRE1NeFFBQVB6YnlRUUFBTkFlQVJjQUFBQUFBQUFBQUtZeVhsOHZCL0VXQUFDQTkvTER1UUFBL0ZzMkFRQUF0RW5BQlFBQUFBQUFBQUNBS1l5SGIvRVdBQUFBbm4rZUFnQUE5NFlBQU5Bd0FSY0FBQUFBQUFBQUFENHFIY1JiQUFBQW9rWVRBQUR3cHBnQUFBRGFKT0FDQUFBQUFBQUFBTUJIcElPL1VBNEFBUEFSSnhNQUFIQ1ZUUUFBQU8wU2NBRUFBQUFBQUFBQUlHSzh2ajRkeEZzQUFBQ21rRTNBZjltNWx4dUVZU0NLb2dqUmgwdWhKWmRBQ1pTVUtZVk8yTEJoRlRUWW9Iak9rV2pnU1k3SVJ4Y0FLRS9ZRHdBQUR1eGlBb0JTYmlZQStMbk5CQUNBKzA0QUFBQVc1VU55QVBpLzdlVFpMSUJyT2dBQTdQTmZFd0FBSmhOd0FhakZCNVFBQUFDNDd3Ull6T04rTlFMQUFLMkhFUUFBT0tKNC9RQndUUWQyZUtjQ2VaNmh3eEo4MndVQUFKT2RUUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFrQ1BnQWdBQUFBQUFBQUFBQUFBQUFBQUFBQUNRSk9BQ0FBQUFBQUFBQUFBQUFBREEwbG9QSTRDekF3QUFBTk1JdUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSkFtNEFBQUFBQUFBQUFBQUFBQUFzTHpXd3dnQUFBQUFUQ0hnQWdBQUFBQUFBQUFBQUFBQUFNQWIwU01BQUFENG5JQUxBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQ1NnQXNBQUFBQUFBQUFBQUFBQUFBbHRCNUdBR2NGQUFBQWhoTndBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQklFbkFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBRWdTY0FFQUFBQUFBQUFBQUFBQUFLQ00xc01JNEl3QUFBREFVQUl1QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJKQWk0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVrQ0xnQUFBQUFBQUFBQUFBQUFBSlRTZWhnQm5BMEFBQUFZUnNBRkFBQUFBQUFBQUFBQUFBQUFBQUFBQUNCSndBVUFBQUFBQUFBQUFBQUFBSUJ5V2c4akFBQUFBRENFZ0FzQUFBQUFBQUFBQUFBQUFBQkFjYUpHQUFBQWtDZmdBZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQ1FKT0FDQUFBQUFBQUFBQUFBQUFCQVNhMkhFY0JaQUFBQWdLODlCV0R2N284anR3MHdEc00zNm9PcEpHUTZZaW9RV0lHM0l3R3BKS3BFNGVXYytFT3Iwd3E3SkFIaWVXYmdHWTkzL01jN1BKRzg4LzRzNEFJQUFBQUFBQUFBQUFBQUFBQUFBQUFBVUVqQUJRQUFBQUFBQUFBQUFBQUFBQUFBQUFDZ2tJQUxBQUFBQUFBQUFBQUFBQUFBM1JybWJBVDhHZ0FBQUFEdUl1QUNBQUFBQUFBQUFBQUFBQUFBQUFBQUFGQkl3QVVBQUFBQUFBQUFBQUFBQUFBQUFBQUFvSkNBQ3dBQUFBQUFBQUFBQUFBQUFGMGI1bXdFWFBzQUFBQkFNUUVYQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUJDQWk0QUFBQUFBQUFBQUFBQUFBQjBiNWl6RVFBQUFBQW9JdUFDQUFBQUFBQUFBQUFBQUFBQTBCblJJZ0FBQUhnY0FSY0FBQUFBQUFBQUFBQUFBQUFBQUFBQWdFSUNMZ0FBQUFBQUFBQUFBQUFBQUxBYTVtd0VYT3NBQUFEQWx3bTRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVVFbkFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ2drNEFJQUFBQUFBQUFBQUFBQUFBQy9HZVpzQkZ6akFBQUF3SmNJdUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRkJKd0FRQUFBQUFBQUFBQUFBQUFBQUFBQUFBb0pPQUNBQUFBQUFBQUFBQUFBQUFBZnpETTJRaTR0Z0VBQUlDYkNiZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFCUVNjQUVBQUFBQUFBQUFBQUFBQUlDL0dPWnNCQUFBQUFCdUl1QUNBQUFBQUFBQUFBQUFBQUFBY0hLaVJBQUFBTEFkQVJjQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0VJQ0xnQUFBQUFBQUFBQUFBQUFBSERGTUdjajRGb0dBQUFBUGlYZ0FnQUFBQUFBQUFBQUFBQUFBQUFBQUFCUVNNQUZBQUFBQUFBQUFBQUFBQUFBQUFBQUFLQ1FnQXNBQUFBQUFBQUFBQUFBQUFCOFlKaXpFWEFOQXdBQUFEOGw0QUlBQUFBQUFBQUFBQUFBQUFBQUFBQUFVRWpBQlFBQUFBQUFBQUFBQUFBQUFBQUFBQUNna0lBTEFBQUFBQUFBQUFBQUFBQUEvTVF3WnlQZzJnVUFBQUErSk9BQ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUZCSXdBVUFBQUFBQUFBQUFBQUFBQUErTWN6WkNMaG1BUUFBZ0tzRVhBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNnbTRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVVFbkFCQUFBQUFBQUFBQUFBQUFDQUd3eHpOZ0t1VlFBQUFPQWRBUmNBQUFBQUFBQUFBQUFBQUFBQUFBQUFnRUlDTGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBaFFSY0FBQUFBQUFBQUFBQUFBQUE0RWJEbkkyQWF4UUFBQUQ0RXdFWEFBQUFBQUFBQUFBQUFBQUFBQUFBQUlCQ0FpNEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJVUVYQUFBQUFBQUFBQUFBQUFBQU9BTGhqa2JBZGNtQUFBQThIOENMZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFoUVJjQUFBQUFBQUFBQUFBQUFBQTRJdUdPUnNCMXlRQUFBRHdYd0l1QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNGQkZ3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFvSnVBQUFBQUFBQUFBQUFBQUFBRUNCWWM1R3dMVUlBQUFBQ0xnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUpRU2NBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUtDVGdBZ0FBQUFBQUFBQUFBQUFBQUlXR09Sc0IxeUFBQUFCMFRzQUZBQUFBQUFBQUFBQUFBQUFBQUFBQUFLQ1FnQXNBQUFBQUFBQUFBQUFBQUFBQUFBQUFRS0VuRXdBQUFBQUFBTFJybUxNUkFBQUFBQUFBRHZiOXoyeGVMNk1oT09UYUF3QUFBSTczelFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUdVRVhBQUFBQUFBQUFBQUFBQUFBT0JPdzV5TmdHc09BQUFBT2lYZ0FnQUFBQUFBQUFBQUFBQUFBQUFBQUFCUVNNQUZBQUFBQUFBQUFBQUFBQUFBQUFBQUFLQ1FnQXNBQUFBQUFBQUFBQUFBQUFBOHdEQm5JK0JhQXdBQWdBNEp1QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFGQkp3QVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFvSk9BQ0FBQUFBQUFBQUFBQUFBQUFEekxNMlFpNHhnQUFBS0F6QWk0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlVRVhBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNnbTRBQUFBQUFBQUFBQUFBQUFBd0FNTmN6WUNyaTBBQUFEb2lJQUxBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQWhBUmNBQUFBQUFBQUFBQUFBQUFCNHNHSE9Sc0ExQlFBQUFKMFFjQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFLQ1RnQWdBQUFBQUFBQUFBQUFBQUFBQUFBQUJRU01BRkFBQUFBQUFBQUFBQUFBQUFOakRNMlFpNGxnQUFBS0FEQWk0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlVRVhBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNnbTRBQUFBQUFBQUFBQUFBQUFBd0VhR09Sc0IxeEFBQUFDY25JQUxBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQWhBUmNBQUFBQUFBQUFBQUFBQUFBQUFBQUFnRUlDTGdBQUFBQUFBQUFBQUFBQUFMQ2hZYzVHd0xVREFBQUFKL1prQWdBQUFBQUFBQUFBQUFBQWdEYThYa1lqZ0Yvek5FQjhCd0FBb0MvZlRBQUFBQUFBQUFBQUFBQUFBTkFHUVFBQVA2c0JBQUNvajRBTEFBQUFBQUFBQUFBQUFBQUFBQUFBQUVBaEFSY0FBQUFBQUFBQUFBQUFBQUFBQUFBQWdFSUNMZ0FBQUFBQUFBQUFBQUFBQUEwWjVtd0VBRCtqQVFBQXFJaUFDd0FBQUFBQUFBQUFBQUFBQUFBQUFBQkFJUUVYQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUJDQWk0QUFBQUFBQUFBQUFBQUFBQ05HZVpzQkFBL213RUFBS2lFZ0FzQUFBQUFBQUFBQUFBQUFBQUFBQUFBUUNFQkZ3QUFBQUFBQUFBQUFBQUFBQUFBQUFDQVFnSXVBQUFBQUFBQUFBQUFBQUFBRFJybWJBUUFQNU1CQUFDb2dJQUxBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQWhBUmNBQUFBQUFBQUFBQUFBQUFBQUFBQUFnRUlDTGdBQUFBQUFBQUFBQUFBQUFJMGE1bXdFQUQrTEFRQUFPSmlBQ3dBQUFBQUFBQUFBQUFBQUFBQUFBQUJBb1NjVEFIVGx6UVFBdTR2cldjd0FBSGp2QkFBQTRJU205ZmpmeWdMQXNaN0RqeitYQm1CZnY3ajNVSnRoOW9vT0FKN3Bmc3AvMndYZ2ZnUEF4cjZaQUFBQUFBQUFBQUNBQW1rOW94a0FBQUM2ZXhjRUFQQk1Bd0FBOEJjQ0xnQUFBQUFBQUFBQWxFcnJlVEVEQUFCQU43SUpBSUFUaUNZQUFBQWVUY0FGQUFBQUFBQUFBSUI3VEVIRUJRQUFvQ2ZSQkFCQTQwVHBBQUNBaHhOd0FRQUFBQUFBQUFEZ1hsUDRFWEVaVFFFQUFIQjZ5UVFBUU1PaUNRQUFnQzBJdUFBQUFBQUFBQUFBOEFoVCtQRWxQaEVYQUFDQWM4dEJ4QVVBYUpmbkdBQUFZQk1DTGdBQUFBQUFBQUFBUEZJS0lpNEFBQUE5dlBzQkFMUW9td0FBQU5pQ2dBc0FBQUFBQUFBQUFJK1cxdk5pQmdBQWdOTmFUQUFBTkNpYUFBQUEySXFBQ3dBQUFBQUFBQUFBVzVpQ2lBc0FBTUNaSlJNQUFKNWZBQUFBZmhCd0FRQUFBQUFBQUFCZ0sxTVFjUUVBQURpcmFBSUFvREhaQkFBQXdGWUVYQUFBQUFBQUFBQUEyTkswbnJmMWpLWUFBQUE0RlYrQUJnQmFFazBBQUFCc1NjQUZBQUFBQUFBQUFJQTlwQ0RpQWdBQWNEYlJCQUJBSXhZVEFBQUFXeEp3QVFBQUFBQUFBQUJnTHltSXVBQUFBSnp0UFE4QXdETUxBQURRUFFFWEFBQUFBQUFBQUFEMmxOYnpZZ1lBQUlCVHlDWUFBQnFRVEFBQUFHeE53QVVBQUFBQUFBQUFnTDFOUWNRRkFBRGdMS0lKQUlES0xTWUFBQUMySnVBQ0FBQUFBQUFBQU1BUnBpRGlBZ0FBY0FhK0VBMEExQ3laQUFBQTJJT0FDd0FBQUFBQUFBQUFSNW1DaUFzQUFNQVpKQk1BQUo1VEFBQ0FuZ200QUFBQUFBQUFBQUJ3cEdrOWIrc1pUUUVBQU5Dc1pBSUFvRktMQ1FBQWdEMEl1QUFBQUFBQUFBQUFVSU1VUkZ3QUFBQmE1WXZSQUVDTmtna0FBSUM5Q0xnQUFBQUFBQUFBQUZDTEZFUmNBQUFBV2hWTkFBQjRQZ0VBQUhvbDRBSUFBQUFBQUFBQVFFMVNFSEVCQUFCbzlYME9BS0FtMlFRQUFNQmVCRndBQUFBQUFBQUFBS2hOQ2lJdUFBQUFyZkVGYVFDZ0p0RUVBQURBbmdSY0FBQUFBQUFBQUFDb1VWclBpeGtBQUFDYUVrMEFBRlFpbVFBQUFOaVRnQXNBQUFBQUFBQUFBTFdhZ29nTEFBQkFTeFlUQUFDVnlDWUFBQUQySk9BQ0FBQUFBQUFBQUVETnBpRGlBZ0FBMEpKa0FnRGdZTkVFQUFEQTNnUmNBQUFBQUFBQUFBQ28zUlJFWEFBQUFGcVJUQUFBZUI0QkFBQjZJK0FDQUFBQUFBQUFBRUFMcGlEaUFnQUEwSUxGQkFEQWdkSjZzaGtBQUlDOUNiZ0FBQUFBQUFBQUFOQ0tLWWk0QUFBQXRDQ2FBQUE0U0RJQkFBQndCQUVYQUFBQUFBQUFBQUJhTWdVUkZ3QUFnTm9sRXdBQUIxbE1BQUFBSEVIQUJRQUFBQUFBQUFDQTFrenJlVnZQYUFvQUFJQXFaUk1BQUFkSUpnQUFBSTRpNEFJQUFBQUFBQUFBUUt0U0VIRUJBQUNvVlRRQkFMQ3paQUlBQU9Bb0FpNEFBQUFBQUFBQUFMUXNCUkVYQUFDQUdpMG1BQUE4ZndBQUFMMFFjQUVBQUFBQUFBQUFvSFVwaUxnQUFBRFUrcjRHQU9DNUF3QUFPRDBCRndBQUFBQUFBQUFBemlBRkVSY0FBSUFhMzlVQUFEeDNBQUFBcHlmZ0FnQUFBQUFBQUFEQVdhUWc0Z0lBQUZDVHhRUUFnT2NPQUFDZ0J3SXVBQUFBQUFBQUFBQ2NTUW9pTGdBQUFEV0pKZ0FBUEc4QUFBQm5KK0FDQUFBQUFBQUFBTURacENEaUFnQUFVTk03R2dDQTV3MEFBT0RVQkZ3QUFBQUFBQUFBQURpakZFUmNBQUFBYXBCTkFBQjQzZ0FBQU01T3dBVUFBQUFBQUFBQWdMTktRY1FGQUFDZ0J0RUVBSURuREFBQTRNd0VYQUFBQUFBQUFBQUFPTE1VUkZ3QUFBQnFlRGNEQVBDY0FRQUFuSmFBQ3dBQUFBQUFBQUFBWjVlQ2lBc0FBTUNSY3ZEbGFnQmd1K2NNQUFDQXd3bTRBQUFBQUFBQUFBRFFneFJFWEFBQUFJNStMd01BZUtSb0FnQUFvQllDTGdBQUFBQUFBQUFBOUNJRkVSY0FBSUNqTENZQUFCNHNtUUFBQUtqRmt3a0FBQUFBQUFBQUFPaElXcyswbm13S0FBQ0F3OTdKQUFEdWZxNzQ5NjkvOS91OE4vcmJQLzlsQkFBQTJOZzNFd0FBQUFBQUFBQUEwSm0wbnRFTUFBQUF1NHNtQUFBZUpKa0FBQUNvaVlBTEFBQUFBQUFBQUFBOVNrSEVCUUFBWUcvWkJBREFneXdtQUFBQWFpTGdBZ0FBQUFBQUFBQkFyNklKQUFBQXZJc0JBTTFKSmdBQUFHb2o0QUlBQUFBQUFBQUFRSyttOWJ5WUFRQUFZRmZKQkFDQTV3a0FBT0JzQkZ3QUFBQUFBQUFBQU9qWkZFUmNBQUFBOXBTREwxMERBUGRaVEFBQUFOUkd3QVVBQUFBQUFBQUFnTjVOUWNRRkFBQmdUOGtFQUlEbkNBQUE0RXdFWEFBQUFBQUFBQUFBUU1RRkFBQmdUNHNKQUlCQ3lRUUFBRUNOQkZ3QUFBQUFBQUFBQU9DSEtZaTRBQUFBN0NXWkFBQW9JQVFIQUFCVVNjQUZBQUFBQUFBQUFBQitOd1VSRndBQWdEMUVFd0FBbmg4QUFJQ3pFSEFCQUFBQUFBQUFBSUEvbTlZem1nRUFBR0JUMlFRQXdCY2xFd0FBQUxVU2NBRUFBQUFBQUFBQWdQZFNFSEVCQUFEWVdqUUJBUEFGQW5BQUFFQzFCRndBQUFBQUFBQUFBT0M2RkVSY0FBQUF0bjd2QWdDNFJUUUJBQUJRTXdFWEFBQUFBQUFBQUFENFdBb2lMZ0FBQUZ2SlFjUUZBTGlOWndZQUFLQnFBaTRBQUFBQUFBQUFBUEJ6S1lpNEFBQUFiUG5PQlFEd21Xd0NBQUNnWmdJdUFBQUFBQUFBQUFEd3VXZ0NBQUNBVFN3bUFBQStFVTBBQUFEVVRzQUZBQUFBQUFBQUFBQStONjNueFF3QUFBQ2JTQ1lBQUg1QzhBMEFBS2llZ0FzQUFBQUFBQUFBQU54bUNpSXVBQUFBVzRnbUFBQStrRXdBQUFDMFFNQUZBQUFBQUFBQUFBQnVONjNuMlF3QUFBQVBsVTBBQUh3Z21RQUFBR2lCZ0FzQUFBQUFBQUFBQUh4TlhNOW9CZ0FBZ0llL2F3RUEvTlZpQWdBQW9BVUNMZ0FBQUFBQUFBQUE4SFVwaUxnQUFBQTgrajBMQU1EekFRQUEwQ1FCRndBQUFBQUFBQUFBS0pPQ2lBc0FBTUNqWkJNQUFIK1JUQUFBQUxSQ3dBVUFBQUFBQUFBQUFNcEZFd0FBQUhqSEFnQTJzWmdBQUFCb2hZQUxBQUFBQUFBQUFBQ1VtOWJ6WWdZQUFJQ0g4Q1Z0QU9CL2tna0FBSUNXQ0xnQUFBQUFBQUFBQU1COXBpRGlBZ0FBOENqSkJBREFLcG9BQUFCb2lZQUxBQUFBQUFBQUFBRGNiMXJQYUFZQUFJQzdKUk1BQUt0c0FnQUFvQ1VDTGdBQUFBQUFBQUFBOEJncGlMZ0FBQURjYXpFQkFIUXZtZ0FBQUdpTmdBc0FBQUFBQUFBQUFEeE9NZ0VBQU1EZG9na0FvR3ZKQkFBQVFHc0VYQUFBQUFBQUFBQUE0TEZlVEFBQUFIQ1haQUlBNkZvMkFRQUEwQm9CRndBQUFBQUFBQUFBZUt3cGlMZ0FBQURjdzVlMkFhQmYwUVFBQUVDTEJGd0FBQUFBQUFBQUFPRHhwdldNWmdBQUFDZ1dUUUFBWFVvbUFBQUFXaVRnQWdBQUFBQUFBQUFBMjBoQnhBVUFBS0RVWWdJQTZGSTJBUUFBMENJQkZ3QUFBQUFBQUFBQTJFNDBBUUFBUUxGa0FnRG9TalFCQUFEUUtnRVhBQUFBQUFBQUFBRFl6clNlRnpNQUFBQVVTU1lBZ0s0c0pnQUFBRnIxWkFJQUFBQUFBQUFBQU5qVXRKN3g5VExtVGY3dHY3NVpHQUFBYU03NmpuVEx4NVpoenRGYUFOQ0ZkTzM1WUgwV3NBd0FBTkNFYnlZQUFBQUFBQUFBQUlETnBXSE9veGtBQUFDK0xKb0FBTHFRVEFBQUFMUk13QVVBQUFBQUFBQUFBUFlSVFFBQUFQRERNT2RiUDVxc0JRRG45M29abHp1ZUZ3QUFBQTRuNEFJQUFBQUFBQUFBQVB1WWhqbS9tQUVBQU9CMnI1ZlJON2NCNFB5U0NRQUFnTllKdUFBQUFBQUFBQUFBd0g2K1IxeEdNd0FBQUh4Sk5BRUFuRm95QVFBQTBEb0JGd0FBQUFBQUFBQUEyRmN5QVFBQVFBakRuRy82M090bFhLd0ZBT2QxN1Y1LzYzTUNBQUJBTFFSY0FBQUFBQUFBQUFCZ1o4T2NYNndBQUFEd0pja0VBT0FlRHdBQVVDc0JGd0FBQUFBQUFBQUEyTjgwelBuWkRBQUFRTy9XZDZOYlA1cXNCUUNuRkUwQUFBQ2NnWUFMQUFBQUFBQUFBQUFjSXc1ekhzMEFBQUR3dWRmTHVGZ0JBRTU1ajM5WGMvdEM0QTBBQUtBYUFpNEFBQUFBQUFBQUFIQ2NhQUlBQUFEdlVBRGczZzRBQU5BMkFSY0FBQUFBQUFBQUFEak9OTXo1MlF3QUFFRFAxdmVpV3orYXJBVUFwNUx1ZUM0QUFBQ29pb0FMQUFBQUFBQUFBQUFjS3c1ekhzMEFBQUR3YzYrWDBUZTZBY0M5SFFBQW9Fb0NMZ0FBQUFBQUFBQUFjTHhvQWdBQUFPOVBBT0NlRGdBQTBDWUJGd0FBQUFBQUFBQUFPTjQwelBuWkRBQUFRSy9XZDZKYlA1cXNCUUNua081NEhnQUFBS2lPZ0FzQUFBQUFBQUFBQU5RaERuTWV6UUFBQVBDeDE4djQvWnZkeVJJQTBMVDAyejBkQUFEZ05KNU1BQUFBQUFBQUFBQUExZmdlY2ZtSEdRQUFnQjZ0NzBPM2ZqU3RaN0lZQURRcmZlRytEd0FBMElSdkpnQUFBQUFBQUFBQWdHcE02M20rOWNPdmw5RmlBQUJBanhZVEFJQjdPUUFBUUUwRVhBQUFBQUFBQUFBQW9DN1JCQUFBQUo5S0pnQUE5M0FBQUlCYUNMZ0FBQUFBQUFBQUFFQjlYajc3d090bHRCSUFBTkN6YUFJQWFGSXlBUUFBY0VZQ0xnQUFBQUFBQUFBQVVKOXBQUW90QUFBQUg4c21BSUFtTFNZQUFBRE9TTUFGQUFBQUFBQUFBQURxRkUwQUFBRGd2UWtBVGlTWkFBQUFPQ3NCRndBQUFBQUFBQUFBcU5PMG51ZHIvK0QxTWxvSEFBREFsOEFCd0wwYkFBQ2dFZ0l1QUFBQUFBQUFBQUJRcjJnQ0FBQ0FEK1hnaStBQTBKTEZCQUFBd0ZrSnVBQUFBQUFBQUFBQVFOMWUvdmczcjVmUklnQUFBTDlMSmdDQUprUVRBQUFBWnliZ0FnQUFBQUFBQUFBQWRadldvOW9DQUFCdzNXSUNBR2hDTWdFQUFIQm1BaTRBQUFBQUFBQUFBRkMvK1AwdnJ4Y2RGd0FBZ0N1U0NRQ2dldGtFQUFEQW1RbTRBQUFBQUFBQUFBQkEvYWIxcUxjQUFBQmNGMDBBQU83VkFBQUFSeEp3QVFBQUFBQUFBQUNBTmtRVEFBQUFYSlZOQUFCVlN5WUFBQURPVHNBRkFBQUFBQUFBQUFEYU1BMXpIczBBQUFCd1ZUUUJBRlJMYkEwQUFEZzlBUmNBQUFBQUFBQUFBR2hITkFFQUFNQlZ5UVFBVUtWb0FnQUFvQWNDTGdBQUFBQUFBQUFBMEk1cG1QTm9CZ0FBZ0hkeUVIRUJnQnE1UHdNQUFGMFFjQUVBQUFBQUFBQUFnTFpFRXdBQUFGeVZUQUFBMWQyYnN4a0FBSUFlQ0xnQUFBQUFBQUFBQUVCYnBtSE9veGtBQUFEZVdVd0FBRlZKSmdBQUFIb2g0QUlBQUFBQUFBQUFBTzJKSmdBQUFMZ3FtUUFBcWlHdUJnQUFkRVBBQlFBQUFBQUFBQUFBMmpNTmN4N05BQUFBOEU0MEFRQlVJWmtBQUFEb2lZQUxBQUFBQUFBQUFBQzBLWm9BQUFEZ25Xd0NBS2hDTWdFQUFOQVRBUmNBQUFBQUFBQUFBR2pUTk14NU5BTUFBTUE3MFFRQWNMakZCQUFBUUUrZVRBRFFsV2dDZ04wbEV3QUEzanNCQUFBQUFOaElDbjV2RmdEY0l3RUFQdWZaQ0FBQU52YkwyOXViRlFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ253ekFRQUFBQUFBQUFBQUFBQUFBQUFBQUFCQUdRRVhBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQkNBaTRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSVVFWEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ2dtNEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBVUVuQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFDZ2s0QUlBQUFBQUFBQUFBQUFBQUFBQUFBQUFVRWpBQlFBQUFBQUFBQUFBQUFBQUFBQUFBQUNna0lBTEFBQUFBQUFBQUFBQUFBQUFBQUFBQUVBaEFSY0FBQUFBQUFBQUFBQUFBQUFBQUFBQWdFSUNMZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFoUVJjQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFLQ2JnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJRU2NBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUtDVGdBZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQlFTTUFGQUFBQUFBQUFBQUFBQUFBQUFBQUFBS0NRZ0FzQUFBQUFBQUFBQUFBQUFBQUFBQUFBUUNFQkZ3QUFBQUFBQUFBQUFBQUFBQUFBQUFDQVFnSXVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0ZCRndBQUFBQUFBQUFBQUFBQUFBQUFBRDREM3QzbU52R3JZWmgxRGZJUHRTVmROZ2RxU3N3WndYVmtzaXVwRnFKcjI5Nld6aXRIY3VmWll2a2R3NGd4RUNVL0hnUWNFWTI1ZzBBRUdUQUJRQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ3lJQUxBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQ1FBUmNBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQ0FETGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUVFaY0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQ0RMZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUVpjQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFDRExnQWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFRWk1BRkFBQUFBQUFBQUFBQUFBQUFBQUFBQUNESWdBc0FBQUFBQUFBQUFBQUFBQUFBQUFBQVFKQUJGd0FBQUFBQUFBQUFBQUFBQUFBQUFBQ0FJQU11QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJCQmx3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlJTXVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJCbHdBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlNdUFDQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkJrd0FVQUFBQUFBQUFBQUFBQUFBQUFBQUFBSU1pQUN3QUFBQUFBQUFBQUFBQUFBQUFBQUFCQWtBRVhBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQWdBeTRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUVHWEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ2d5NEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUdYQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ3k0QUlBQUFBQUFBQUFBQUFBQUFBQUFBQUFFR1RBQlFBQUFBQUFBQUFBQUFBQUFBQUFBQUFneUlBTEFBQUFBQUFBQUFBQUFBQUFBQUFBQUVDUUFSY0FBQUFBQUFBQUFBQUFBQUFBQUFBQWdDQURMZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFRUVpjQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNDRExnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFRWmNBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNETGdBZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQVFaTUFGQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0RJZ0FzQUFBQUFBQUFBQUFBQUFBQUFBQUFBUUpBQkZ3QUFBQUFBQUFBQUFBQUFBQUFBQUFDQUlBTXVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkJCbHdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUlNdUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkJsd0FRQUFBQUFBQUFBQUFBQUFBQUFBQUFBSU11QUNBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQmt3QVVBQUFBQUFBQUFBQUFBQUFBQUFBQUFJTWlBQ3dBQUFBQUFBQUFBQUFBQUFBQUFBQUJBa0FFWEFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBZ0F5NEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFRUdYQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnZ3k0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFR1hBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFneTRBSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVHVEFCUUFBQUFBQUFBQUFBQUFBQUFBQUFBQWd5SUFMQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUNRQVJjQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0NBRExnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFRWmNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0NETGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFaY0FFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0RMZ0FnQUFBQUFBQUFBQUFBQUFBQUFBQUFBUVpNQUZBQUFBQUFBQUFBQUFBQUFBQUFBQUFDRElnQXNBQUFBQUFBQUFBQUFBQUFBQUFBQUFRSkFCRndBQUFBQUFBQUFBQUFBQUFBQUFBQUNBSUFNdUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQkJsd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFJSU11QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQmx3QVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJTXVBQ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUJCa3dBVUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlNaUFDd0FBQUFBQUFBQUFBQUFBQUFBQUFBQkFrQUVYQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFnQXk0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVFR1hBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdneTRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVHWEFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWd5NEFJQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUdUQUJRQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ3lJQUxBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQ1FBUmNBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQ0FETGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUVFaY0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQ0RMZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUVpjQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFDRExnQWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFRWk1BRkFBQUFBQUFBQUFBQUFBQUFBQUFBQUNESWdBc0FBQUFBQUFBQUFBQUFBQUFBQUFBQVFKQUJGd0FBQUFBQUFBQUFBQUFBQUFBQUFBQ0FJQU11QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJCQmx3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlLK1NnQ1F4MCsvL242dkFzQ25hMy84OW5PWEFRRHd1Uk9Bai9yY2VUNXRQbmNDWE1IaDJMZkhYNG9TQUo5L1QvdjR1dG85N2VQOThkOWZQenc4cUFzczc2ZGZmM2NmQzNBRGYvejI4NjRDd1d1M242a0NjRTN0N29yZlc1djB2c3kvQXZjaEFLTmZxM3dQQVNBUkF5NEF1VlFKQUc1eTlucVFEZ0R3dVJNQW56c0J4bGZjMHdMY1JIdDgvU0lEZ1B0WWdNbDQrSW9vMTIwQXJuMWQ4Zk5pM0ljQWpNMzNFQUFTK1NJQkFBQUFBQUFBQUFCd0kwVUNBQUFna1NvQkFGZlVKQUFBQUJpSEFSY0FBQUFBQUFBQUFPQ1c3aVVBQUFDUzhEK3ZBM0F0N2ZIVlpRQUFBQmlIQVJjQUFBQUFBQUFBQU9DV3lqWCtrdk5wVXhJQUFKaEJrd0FBMXhNQUFJRDFHSEFCQUFBQUFBQUFBQUJ1cVVnQUFBQWswaVFBNEFwMkNRQUFBTVppd0FVQUFBQUFBQUFBQUxpMWV3a0FBSUFrUEhBUHdIczFDUUFBQU1aandBVUFBQUFBQUFBQUFMaTFJZ0VBQUpCSWt3QUExeEVBQUlDMUdIQUJBQUFBQUFBQUFBQnVyVWdBQUFBa1VpVUE0QjEyQ1FBQUFNWmp3QVVBQUFBQUFBQUFBQmpCdlFRQUFFQVNYUUlBZ3FvRUFBQUFZekxnQWdBQUFBQUFBQUFBaktCRS8rRDV0S2tIQUFETXBrb0FRRUNUQUFBQVlFd0dYQUFBQUFBQUFBQUFnQkVVQ1FBQWdFU2FCQUFFZEFrQUFBREdaTUFGQUFBQUFBQUFBQUFZeGIwRUFBQkFFaDdBQitDdHFnUUFBQURqTXVBQ0FBQUFBQUFBQUFBQUFBRHcrYW9FQUx4Qmt3QUFBR0JjQmx3QUFBQUFBQUFBQUlCUlZBa0FBSUJFZGdrQXVGQjdmSFVaQUFBQXhtWEFCUUFBQUFBQUFBQUFHTWttQVFBQWtFaVRBQURYQ3dBQWdQa1pjQUVBQUFBQUFBQUFBRVpTM3ZMbTg4bmVDd0FBTUxVbUFRQVgyQ1VBQUFBWW13RVhBQUFBQUFBQUFBQmdKRlVDQUFBZ0VRL2tBL0NhSmdFQUFNRDRETGdBQUFBQUFBQUFBQUNqMlNRQUFBQVNhUklBOEFOVkFnQUFnUEVaY0FFQUFBQUFBQUFBQUVaVEpBQUFBQkpwRWdEd0ExMENBQUNBOFJsd0FRQUFBQUFBQUFBQVJsTWtBQUFBRXRrbEFPQUZWUUlBQUlBNUdIQUJBQUFBQUFBQUFBQkdVeTU1MC9tMEtRVUFBS3lpU2dEQU01b0VBQUFBY3pEZ0FnQUFBQUFBQUFBQWpPaGVBZ0FBSUpFbUFRRFA2QklBQUFETXdZQUxBQUFBQUFBQUFBQXdvaUlCQUFDUWlBZjBBZmluS2dFQUFNQThETGdBQUFBQUFBQUFBQUFqS2hJQUFBREpWQWtBZUdLWEFBQUFZQjRHWEFBQUFBQUFBQUFBZ0ZGdEVnQUFBSWswQ1FCd1RRQUFBSmlUQVJjQUFBQUFBQUFBQUdCVTVhWGZPSjlzdXdBQUFNdnBkeDdZQitCUHJnY0FBQUNUTWVBQ0FBQUFBQUFBQUFDTXFrb0FBQUFrMHlRQTRORXVBUUFBd0Z3TXVBQUFBQUFBQUFBQUFBQUFBSXpCQS9zQU5Ba0FBQURtWThBRkFBQUFBQUFBQUFBWTJiMEVBQUJBTWswQ2dOU3FCQUFBQVBNeDRBSUFBQUFBQUFBQUFFemxmTnBFQUFBQVZ0WWtBRWl0U3dBQUFEQWZBeTRBQUFBQUFBQUFBTURJcWdRQUFFQXl1d1FBYVZVSkFBQUE1bVRBQlFBQUFBQUFBQUFBR04wbUFRQUFrRXlWQUNDbEpnRUFBTUNjRExnQUFBQUFBQUFBQUFDakt4SUFBQURKTkFrQVV1b1NBQUFBek1tQUN3QUFBQUFBQUFBQU1McnkxeGZuMDZZR0FBQ1FnUWY0QWZLcEVnQUFBTXpMZ0FzQUFBQUFBQUFBQURDNklnRUFBSkJRbFFBZ2xWMENBQUNBZVJsd0FRQUFBQUFBQUFBQVpyQkpBQUFBSk5Na0FIRG1Bd0FBTUFjRExnQUFBQUFBQUFBQXdBeUtCQUFBUURKZEFvQTBtZ1FBQUFCek0rQUNBQUFBQUFBQUFBRE1vSnhQbXdvQUFFQTJWUUtBRkhZSkFBQUE1bWJBQlFBQUFBQUFBQUFBbUVHUkFBQUFTTWdEL1FEcmF4SUFBQURNejRBTEFBQUFBQUFBQUFBd2hjT3hieW9BQUFBSk5Ra0FsbFlsQUFBQW1KOEJGd0FBQUFBQUFBQUFZQlpGQWdBQUlLRW1BY0RTdWdRQUFBRHpNK0FDQUFBQUFBQUFBQURNb2tnQUFBQWt0RXNBc0t3cUFRQUF3Qm9NdUFBQUFBQUFBQUFBQUxNb0VnQUFBRWsxQ1FDYzd3QUFBSXpMZ0FzQUFBQUFBQUFBQURDTnc3RnZLZ0FBQUFsVkNRQ1cxQ1VBQUFCWWd3RVhBQUFBQUFBQUFBQmdKa1VDQUFBZ0lRLzRBNnluU2dBQUFMQU9BeTRBQUFBQUFBQUFBTUJNaWdRQUFFQlNWUUtBcGV3U0FBQUFyTU9BQ3dBQUFBQUFBQUFBTUpNaUFRQUFrRlNUQU1DWkRnQUF3SmdNdUFBQUFBQUFBQUFBQUFBQUFJeXZTd0N3akNZQkFBREFXZ3k0QUFBQUFBQUFBQUFBVXprYys3MEtBQUJBVWxVQ2dDWHNFZ0FBQUt6RmdBc0FBQUFBQUFBQUFBQUFBTUFjUFBBUE1MOG1BUUFBd0hvTXVBQUFBQUFBQUFBQUFMT3BFZ0FBQUlrMUNRQ21WaVVBQUFCWWp3RVhBQUFBQUFBQUFBQUFBQUNBZVRRSkFLYldKUUFBQUZpUEFSY0FBQUFBQUFBQUFHQTZoMlBmVkFBQUFKTGFKUUNZVnBVQUFBQmdUUVpjQUFBQUFBQUFBQUNBR1JVSkFBQ0F4Sm9FQU01dkFBQUF4dkZWQWdBQUFBQUFnSGtkamwwRUFBQ3lLbmYrMTNrQUFDQ3ZkbWZZRW1CR2ZzQUxBQUN3cUM4U0FBQUFBQUFBQUFBQUV5b1NBQUFBaVJtMEJKaFBsUUFBQUdCZEJsd0FBQUFBQUFBQUFBQUFBQURtVXlVQW1JcnhMUUFBZ0lVWmNBRUFBQUFBQUFBQUFLWjBPUFo3RlFBQWdNU2FCQURPYkFBQUFNWmd3QVVBQUFBQUFBQUFBQUFBQUdBK1hRS0FhVFFKQUFBQTFtYkFCUUFBQUFBQUFBQUFtRldSQUFBQVNLNUtBRENGWFFJQUFJQzFHWEFCQUFBQUFBQUFBQUJtVlNRQUFBQ1NheElBT0tzQkFBQzRQUU11QUFBQUFBQUFBQUFBQUFBQWMrcDNoZ0VBUmxjbEFBQUFXSjhCRndBQUFBQUFBQUFBWUZxSFk3OVhBUUFBU0s1SkFEQzBMZ0VBQU1ENkRMZ0FBQUFBQUFBQUFBQUFBQURNYTVjQVlGaFZBZ0FBZ0J3TXVBQUFBQUFBQUFBQUFBQUFBTXl0U1FEZ2ZBWUFBT0IyRExnQUFBQUFBQUFBQUFBenF4SUFBQUFZQ0FBWVZKY0FBQUFnQndNdUFBQUFBQUFBQUFBQUFBQUFjOXNsQUJoT2xRQUFBQ0FQQXk0QUFBQUFBQUFBQU1EVURzZStxUUFBQUdBb0FHQXd4clVBQUFBU01lQUNBQUFBQUFBQUFBRE1ya2dBQUFCdzF5UUFjQ1lEQUFCd0d3WmNBQUFBQUFBQUFBQUFBQUFBNXRjbEFCaEdrd0FBQUNBWEF5NEFBQUFBQUFBQUFNRHNpZ1FBQUFEZlZBa0FockJMQUFBQWtJc0JGd0FBQUFBQUFBQUFZSFpGQWdBQWdHK2FCQURPWWdBQUFENmZBUmNBQUFBQUFBQUFBQUFBQUlBMWRBa0FicTVLQUFBQWtJOEJGd0FBQUFBQUFBQUFZSHFIWTk5VUFBQUErS1pLQUhCVHhyUUFBQUFTTXVBQ0FBQUFBQUFBQUFDc29FZ0FBQUR3elM0QndNMVVDUUFBQUhJeTRBSUFBQUFBQUFBQUFBQUFBTENXSmdHQTh4Y0FBSURQWThBRkFBQUFBQUFBQUFBQUFBQmdMVTBDZ0p2b0VnQUFBT1QwVlFJQUFBQUFBQUFBQUdBQjlmRzF5d0FBQUt6dWZOb3VlZHQrT1BhcUZzQ25xay9QNk1keldCRUFBSUJFdmtnQUFBQUFBQUFBQUFBQUFBQXdoemNNQWpTMUFEN1ArYlR0Z2JNYUFBQ0FSUmh3QVFBQUFBQUFBQUFBQUFBQVdFK1ZBT0RUTkFrQUFBQnlNK0FDQUFBQUFBQUFBQUFzNFhEc213b0FBQUIvT3ArMnJnTEFwMmtTQUFBQTVHYkFCUUFBQUFBQUFBQUFXRVdSQUFBQXlPQnd2SGlicGFvRjhQSE9wMjBQbk5FQUFBQXN4SUFMQUFBQUFBQUFBQUFBQUFEQW1wb0VBTTVhQUFBQVBwNEJGd0FBQUFBQUFBQUFBQUFBZ0FXZFQxdFhBZUREVlFrQUFBQXc0QUlBQUFBQUFBQUFBS3lpU0FBQUFHUnhPRjY4elZMVkF2ZzRUOGV5M25BMkF3QUFzQmdETGdBQUFBQUFBQUFBd0NxS0JBQUFBTjg3bjdaZEJZQVBVeVVBQUFEZ2Z3eTRBQUFBQUFBQUFBQUFBQUFBcksxSkFPQjhCUUFBNE9NWWNBRUFBQUFBQUFBQUFBQUFBSmpRNGRndmZXdFRDK0Q2enFldEI4NWtBQUFBRm1UQUJRQUFBQUFBQUFBQVdNYmgyRGNWQUFBQXZuYytiYnNLQUZkWEpRQUFBT0F2Qmx3QUFBQUFBQUFBQUlDVkZBa0FBQUNlMVNRQXVCN2pXQUFBQUR4bHdBVUFBQUFBQUFBQUFBQUFBR0JTaDJPLzlLMU5MWUNyYWNHekdBQUFnRVVaY0FFQUFBQUFBQUFBQUFBQUFGamMrYlR0S2dCY1RaTUFBQUNBcDc1S0FBQUFBQUFBQUFBQUFBQUFNSy9Ec1YvNjF2ci9Gd0R2czcvaDdBVUFBQ0NCTHhJQUFBQUFBQUFBQUFBQUFBQ2swQ1FBY0pZQ0FBQndmUVpjQUFBQUFBQUFBQUNBbFZRSkFBQUFYdFFsQUhpM0tnRUFBQUQvWk1BRkFBQUFBQUFBQUFBQUFBQWdqeW9Cd0xzWXd3SUFBT0JmRExnQUFBQUFBQUFBQUFBQUFBRGswU1FBQ0tzU0FBQUE4QndETGdBQUFBQUFBQUFBQUFBQUFIbjBPeU11QUZIT1R3QUFBSjVsd0FVQUFBQUFBQUFBQUFBQUFDQ1hKZ0ZBU0pjQUFBQ0E1eGh3QVFBQUFBQUFBQUFBQUFBQXlHV1hBT0ROcWdRQUFBQzh4SUFMQUFBQUFBQUFBQUN3bE1PeGJ5b0FBQUM4cWtrQThDYkdyd0FBQUhpUkFSY0FBQUFBQUFBQUFHQTFSUUlBQUlCWE5Ra0FuSmtBQUFCY2h3RVhBQUFBQUFBQUFBQUFBQUNBZkhZSkFDN1dKQUFBQU9CSERMZ0FBQUFBQUFBQUFBQUFBQURrVkNVQXVJalJLd0FBQUg3SWdBc0FBQUFBQUFBQUFBQUFBRUJPVFFJQVp5VUFBQUR2WjhBRkFBQUFBQUFBQUFBQUFBQWdweTRCd0t1cUJBQUFBTHpHZ0FzQUFBQUFBQUFBQUFBQUFFQmVWUUtBSHpKMkJRQUF3S3NNdUFBQUFBQUFBQUFBQUFBQUFPVFZKQUI0VVpVQUFBQ0FTeGh3QVFBQUFBQUFBQUFBQUFBQXlLdExBUENpSmdFQUFBQ1hNT0FDQUFBQUFBQUFBQUFBQUFDUVc1VUE0RmxHcmdBQUFMaUlBUmNBQUFBQUFBQUFBQUFBQUlEY2Rna0EvcVZLQUFBQXdLVU11QUFBQUFBQUFBQUFBQUFBQU5Ba0FQaU9jU3NBQUFBdVpzQUZBQUFBQUFBQUFBQUFBQUNBSmdHQU14RUFBSUFZQXk0QUFBQUFBQUFBQUFBQUFBRHNFZ0Q4clVrQUFBREFXL3puNGVGQkJRQUFBQUFBQUFBQUFBQUFBQUFBQUFDQWdDOFNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBREVHSEFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWd5NEFJQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUdUQUJRQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ3lJQUxBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQ1FBUmNBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQ0FETGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUVFaY0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQ0RMZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUVpjQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFDRExnQWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFRWk1BRkFBQUFBQUFBQUFBQUFBQUFBQUFBQUNESWdBc0FBQUFBQUFBQUFBQUFBQUFBQUFBQVFKQUJGd0FBQUFBQUFBQUFBQUFBQUFBQUFBQ0FJQU11QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJCQmx3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlJTXVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJCbHdBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlNdUFDQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkJrd0FVQUFBQUFBQUFBQUFBQUFBQUFBQUFBSU1pQUN3QUFBQUFBQUFBQUFBQUFBQUFBQUFCQWtBRVhBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQWdBeTRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUVHWEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ2d5NEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUdYQUJBQUFBQUFBQUFBQUFBQUFBZ1AreWM4Y0NBQUFBQUlQOHJlZXd1MEFDQUFDQVNlQUNBQUFBQUFBQUFBQUFBQUFBQUFBQUFEQUpYQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFKb0VMQUFBQUFBQUFBQUFBQUFBQUFBQUFBTUFrY0FFQUFBQUFBQUFBQUFBQUFBQUFBQUFBbUFRdUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDVHdBVUFBQUFBQUFBQUFBQUFBQUFBQUFBQVlCSzRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQk1BaGNBQUFBQUFBQUFBQUFBQUFBQUFBQUFnRW5nQWdBQUFBQUFBQUFBQUFBQUFBQUFBQUF3Q1Z3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNhQkN3QUFBQUFBQUFBQUFBQUFBQUFBQUFEQUpIQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFKZ0VMZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFrOEFGQUFBQUFBQUFBQUFBQUFBQUFBQUFBR0FTdUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBVEFJWEFBQUFBQUFBQUFBQUFBQUFBQUFBQUlCSjRBSUFBQUFBQUFBQUFBQUFBQUFBQUFBQU1BbGNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQW1nUXNBQUFBQUFBQUFBQUFBQUFBQUFBQUF3SlFBN04ySmpSdkhGb2JSMFdEeW9DSngweGxSRWJ6cUNOUWgzVllrNmtoa3lndWVsbG5JTzcxVWRaOERFQVlNeXpKK3NUd3NTdnhHd0FVQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUVuQUJRQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ1NjQUZBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQkp3QVVBQUFBQUFBQUFBQUFBQUFBQUFBQUFJRW5BQlFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnU2NBRkFBQUFBQUFBQUFBQUFBQUFBQUFBQUNCSndBVUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlFbkFCUUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdTY0FGQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0JKd0FVQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUVuQUJRQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ1NjQUZBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQkp3QVVBQUFBQUFBQUFBQUFBQUFBQUFBQUFJRW5BQlFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnU2NBRkFBQUFBQUFBQUFBQUFBQUFBQUFBQUNCSndBVUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlFbkFCUUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdTY0FGQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0JKd0FVQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUVuQUJRQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ1NjQUZBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQkp3QVVBQUFBQUFBQUFBQUFBQUFBQUFBQUFJRW5BQlFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnU2NBRkFBQUFBQUFBQUFBQUFBQUFBQUFBQUNCSndBVUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlFbkFCUUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdTY0FGQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0JKd0FVQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUVuQUJRQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ1NjQUZBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQkp3QVVBQUFBQUFBQUFBQUFBQUFBQUFBQUFJRW5BQlFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnU2NBRkFBQUFBQUFBQUFBQUFBQUFBQUFBQUNCSndBVUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlFbkFCUUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdTY0FGQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0JKd0FVQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUVuQUJRQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ1NjQUZBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQkp3QVVBQUFBQUFBQUFBQUFBQUFBQUFBQUFJRW5BQlFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnU2NBRkFBQUFBQUFBQUFBQUFBQUFBQUFBQUNCSndBVUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlFbkFCUUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdTY0FGQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0JKd0FVQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUVuQUJRQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ1NjQUZBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQkp3QVVBQUFBQUFBQUFBQUFBQUFBQUFBQUFJRW5BQlFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnU2NBRkFBQUFBQUFBQUFBQUFBQUFBQUFBQUNCSndBVUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlFbkFCUUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdTY0FGQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0JKd0FVQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUVuQUJRQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ1NjQUZBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQkp3QVVBQUFBQUFBQUFBQUFBQUFBQUFBQUFJRW5BQlFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnU2NBRkFBQUFBQUFBQUFBQUFBQUFBQUFBQUNCSndBVUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlPbkpCS3poNDZjdi83TUNBQUJRb1ppR2JqUkRHMDZYc2J2KzVXd0pBQUFBQURpMmFlaDZLNnpuZEhueGJYVHYyUUlBaC9YMTh4OWVrNUx5OGRNWEk3eVB6eVdBcjZ0QS9uV0lyNk1BQU80akxFekFoYlVVRXdBQUFKWGVWUVJjMm5GMnZ3UUFBQUFBcnZ3aHVqcWNIN3huQ3dCNFRRcXNmdzg1bXdGOFhRVlNpZ2tBQU54SFdOYWpDUUFBQUFBQUFBQUFBQUFBQUtoY21BQjJwNWdBQUFDQXZSQndBUUFBQUFBQUFBQUFXbEZNQUFBQWNGaStLelk0MXdBQUFGQXRBUmNBQUFBQUFBQUFBQUFBQUFCYUVDWUE1eGtBQUFCcUpPQUNBQUFBQUFBQUFBQzBJa3dBQUFEZ1hnZzR6d0FBQUZBYkFSY0FBQUFBQUFBQUFLQUowOUNOVmdBQUFEaTAzZ1RnUEFNQUFFQ05CRndBQUFBQUFBQUFBQUFBQUFCb1JURUJOQzlNQUFBQXdONEl1QUFBQUFBQUFBQUFBQzBvSmdBQUFPQkIrQUdjWXdBQUFLaVFnQXNBQUFBQUFBQUFBQUFBQUFDdEdFMEF6ZXROQUFBQXdONEl1QUFBQUFBQUFBQUFBQzBJRXdBQUFQQ3ZZZ0pvVnBnQUFBQ0FQUkp3QVFBQUFBQUFBQUFBcWpjTm5lK3dEZ0FBd0g5NkUwQ3p3Z1FBQUFEc2tZQUxBQUFBQUFBQUFBQUFBQUFBclFrVFFKTUVtQUFBQU5nbEFSY0FBQUFBQUFBQUFLQjJ4UVFBQUFEOElrd0F6aTBBQUFEVVFzQUZBQUFBQUFBQUFBQUFBQUNBMXZRbWdPWVVFd0FBQUxCWEFpNEFBQUFBQUFBQUFFRHR3Z1FBQUFBOG81Z0FtakthQUFBQWdMMFNjQUVBQUFBQUFBQUFBS28yRFowUDl3QUFBUENjTUFFMG81Z0FBQUNBUFJOd0FRQUFBQUFBQUFBQWFoWW1BQUFBNEFXQ245Q09NQUVBQUFCN0p1QUNBQUFBQUFBQUFBRFVMRXdBQUFEQUs0b0pvQW1DU3dBQUFPeWFnQXNBQUFBQUFBQUFBQUFBQUFDdENoTkE5WW9KQUFBQTJEc0JGd0FBQUFBQUFBQUFvRnJUMFBWV0FBQUE0QlhqZzRnTDFNNFpCUUFBWVBjRVhBQUFBQUFBQUFBQUFBQUFBR2habUFDcU5wb0FBQUNBdlJOd0FRQUFBQUFBQUFBQWFoVW1BQUFBNEFhOUNhQmF4UVFBQUFBY2dZQUxBQUFBQUFBQUFBQlFxekFCQUFBQTdwRGdiQUlBQUVEdEJGd0FBQUFBQUFBQUFJQmFoUWtBQUFDNFVURUJWR2swQVFBQUFFY2c0QUlBQUFBQUFBQUFBRlJwR2pvZjhBRUFBT0JXN3BCUW4ySUNBQUFBamtMQUJRQUFBQUFBQUFBQXFGR1lBQUFBZ0RzVkUwQlZlaE1BQUFCd0ZBSXVBQUFBQUFBQUFBQkFqY0lFQUFBQXVFdUM4d2dBQUFBdEVIQUJBQUFBQUFBQUFBQUFBQUJnRDhZSDBRaW9oYk1JQUFEQW9RaTRBQUFBQUFBQUFBQUExWm1HcnJjQ0FBQUFDV0VDcUlMM2RnQUFBRGdVQVJjQUFBQUFBQUFBQUFBQUFBRDJRalFDdGhjbUFBQUE0R2dFWEFBQUFBQUFBQUFBZ05vVUV3QUFBUEFPWVFKd0JnRUFBR0JOQWk0QUFBQUFBQUFBQUFBQUFBRHNTWmdBTnRXYkFBQUFnS01SY0FFQUFBQUFBQUFBQUtveURaMFArUUFBQVBBZTdwV3duVEFCQUFBQVJ5VGdBZ0FBQUFBQUFBQUFBQUFBd040VUU4QW13Z1FBQUFBY2tZQUxBQUFBQUFBQUFBQlFrMklDQUFBQVpoQW1nRTMwSmdBQUFPQ0lCRndBQUFBQUFBQUFBQUFBQUFEWW05RUVzTG93QVFBQUFFY2w0QUlBQUFBQUFBQUFBRlJqR2pyZnBSa0FBSUM1RkJPQU13Y0FBQUJyRUhBQkFBQUFBQUFBQUFBQUFBQmdqMFJDWVYyakNRQUFBRGdxQVJjQUFBQUFBQUFBQUtBV3hRUUFBQURNTEV3QXF5Z21BQUFBNE1nRVhBQUFBQUFBQUFBQUFBQUFBTmlyTUFFNGF3QUFBTEMwSnhNQUFBQUFBQUFBQUFBMW1JYXV0MEoxdnliUC92M1RaVFFPQUFEUWl1OTN6V0lHV0p3M0N3QUFBRGkwUnhNQUFBQUFBQUFBQUFBVkNCTUFBQUN3a0dJQ2NNWUFBQUJnU1FJdUFBQUFBQUFBQUFCQURjSUVBQUFBdUhPQ013WUFBQUF0RW5BQkFBQUFBQUFBQUFCcUVDWUFBQUJnSWFNSndCa0RBQUNBSlFtNEFBQUFBQUFBQUFBQW01dUd6Z2Q5QUFBQVdGSXhBVGhiQUFBQXNCUUJGd0FBQUFBQUFBQUFZR3RoQWdBQUFOdzl3ZGtDQUFDQVZnbTRBQUFBQUFBQUFBQUFXd3NUQUFBQXNMRFIvUk1XTzFzQUFBQndlQUl1QUFBQUFBQUFBQURBMXNJRUFBQUF1SDlDYzRvSkFBQUE0QjhDTGdBQUFBQUFBQUFBd0thbW9mT2RtZ0VBQUZoRGJ3S1lWWmdBQUFBQS9pSGdBZ0FBQUFBQUFBQUFiS21ZQUFBQWdCV0ZDV0Myc3lUS0N3QUFBUDhTY0FFQUFBQUFBQUFBQUFBQUFPQW9pZ2xnRm1FQ0FBQUErRDhCRndBQUFBQUFBQUFBWURQVDBQVldBQUFBWUVXakNXQVczdE1CQUFDQUh3aTRBQUFBQUFBQUFBQUFXd2tUQUFBQXNJRmlBbmlYTUFFQUFBRDhUTUFGQUFBQUFBQUFBQURZU3BnQUFBQUE5MUZ3aGdBQUFLQjFUeVlBQUFBQUFBQUFBQUEyMHA4dTR5TC80bW5vckFzQUFNQkx2bDlHNC9vNG13SlNlaE1BQUFEQXp4NU5BQUFBQUFBQUFBQUFBQUFBd01HRUNjRFpBUUFBZ0xrSXVBQUFBQUFBQUFBQUFGc29KZ0FBQUdCRHZRa2dKVXdBQUFBQXZ4TndBUUFBQUFBQUFBQUF0aEFtQUFBQXdOMFVtaU4rQkFBQUFNOFFjQUVBQUFBQUFBQUFBTFl3bWdBQUFJQ05oUW5BbVFFQUFJQTVDTGdBQUFBQUFBQUFBQUJyS3lZQUFBQ2dBcjBKNEM1aEFnQUFBSGllZ0FzQUFBQUFBQUFBQUxDMk1BRUFBQUNWS0NhQW00a2VBUUFBd0FzRVhBQUFBQUFBQUFBQWdMV05KZ0FBQUtBU1lRSzRTVEVCQUFBQXZFekFCUUFBQUFBQUFBQUFXRk9ZQUFBQWdJcUlqTUp0d2dRQUFBRHdNZ0VYQUFBQUFBQUFBQUJnVFdFQ0FBQUFLbE5NQUc4U093SUFBSUJYQ0xnQUFBQUFBQUFBQUFCcjZrMEFBQUNBdXlvMHBaZ0FBQUFBWGlmZ0FnQUFBQUFBQUFBQXJDVk1BQUFBZ0Rzck9COEFBQUN3TndJdUFBQUFBQUFBQUFEQVdzSUVBQUFBdUxOQ2MwWVRBQUFBd09zRVhBQUFBQUFBQUFBQWdMWDBKZ0FBQU1DZEZacFNUQUFBQUFCdkUzQUJBQUFBQUFBQUFBRFdFR3Y5Uk5QUVdSc0FBSUNNWWdMNFRaZ0FBQUFBM2liZ0FnQUFBQUFBQUFBQXJDRk1BQUFBZ0xzck5HYzBBUUFBQUx4TndBVUFBQUFBQUFBQUFGaERid0lBQUFBcUoxUUJQeXNtQUFBQWdOc0l1QUFBQUFBQUFBQUFBRXNySmdBQUFNQWRGcG9USmdBQUFJRGJDTGdBQUFBQUFBQUFBQUJMQ3hNQUFBRGdEZ3ZObllYUkRBQUFBSEFiQVJjQUFBQUFBQUFBQUdCcFB1d0RBQUJBUzNmWU1BTTRCd0FBQUhBUEFSY0FBQUFBQUFBQUFHQkp4UVFBQUFBMEprd0FENzBKQUFBQTRIWUNMZ0FBQUFBQUFBQUF3SkxDQkFBQUFEUkd1SUtqQ3hNQUFBREFmUVJjQUFBQUFBQUFBQUNBcGNUMU1ab0JBQUNBUnUrMDRQa1BBQUFBM09USkJBQUFBQUFBQUFBQXdFTENCQUFBQU5SZ0dycTcvdm5UWlN6dXRSejR2UFMvbkFlakFBQUF3QnNlVFFBQUFBQUFBQUFBQUN5a053RUFBQUF0bW9aT3NZS2pDaE1BQUFEQS9RUmNBQUFBQUFBQUFBQ0FKUlFUQUFBQTRHNEx6UWtUQUFBQXdQMEVYQUFBQUFBQUFBQUFnQ1hFRmovcE5IU1dCd0FBNERlbnk5ak0zUmEyTkExZFA4UFpBUUFBZ01NUmNBRUFBQUFBQUFBQUFPWVcxNGRQOXdBQUFOQzBhZWpHQnhFWGpzWHpIUUFBQUpJRVhBQUFBQUFBQUFBQWdMbUZDUUFBQUtqTjZaSnFqYnJqY2lTZTd3QUFBSkFrNEFJQUFBQUFBQUFBQU15dE53RUFBQUI3TUEyZE95NkhmYjRubzBjQUFBQndTQUl1QUFBQUFBQUFBQURBbklvSkFBQUEySmt3QVFkUVRBQUFBQUI1QWk0QUFBQUFBQUFBQU1DY3dnUUFBQURVNm5RWk16K3NXSTREaUJuT0NnQUFBQnlXZ0FzQUFBQUFBQUFBQURDWHVENTh1Z2NBQUlCZG1ZYk9YUmZQY3dBQUFPQlZBaTRBQUFBQUFBQUFBTUJjaWdrQUFBQnc1d1hQYndBQUFEZ2FBUmNBQUFBQUFBQUFBR0FPY1gxcytwMmFwNkh6cXdBQUFNQ2JUcGZVOVRVc3g0N0ZER2NFQUFBQURrM0FCUUFBQUFBQUFBQUFtRU9ZQUFBQWdMMmFoazdSQXM5dkFBQUE0RVVDTGdBQUFBQUFBQUFBd0J4NkV3QUFBTEJ6eFFSNFhnTUFBQURQZVRJQkFBQUFBQUFBQUFEd1RzVUVBQUFBdE9SMEdUTS9ySGNIWm9jaWVSNEFBQUNBSHp5YUFBQUFBQUFBQUFBQWVLZmVCQUFBQUJ4RW1JQ2RVVzhCQUFDQUdUeVpBQUFBQUFBQUFBQUFlSWZ5OWZNZmRmeVhmUDdtVjJNbEh6OTlNUUlBQU55cG1yc1Q3NzBQeGZVdlowdXdFOFVFQUFBQU1JOUhFd0FBQUFBQUFBQUFBTy9RbXdBQUFBRDNZR2hTbUFBQUFBRG1JZUFDQUFBQUFBQUFBQUJrRlJNQUFBRGdQZ3hOaXV0ak5BTUFBQURNUThBRkFBQUFBQUFBQUFESThsM0hBUUFBT0tJd0FaN0hBQUFBd0k4RVhBQUFBQUFBQUFBQWdJeGlBZ0FBQUE1cU5BRTdJTXdMQUFBQU14SndBUUFBQUFBQUFBQUFNbnpJQndBQWdDTXJKcUJoWVFJQUFBQ1lsNEFMQUFBQUFBQUFBQUJ3cjdNSkFBQUFPRGhoVTFvV0pnQUFBSUI1Q2JnQUFBQUFBQUFBQUFEM2lPdGpOQU1BQUFDSVlOQXNBU0lBQUFDWW1ZQUxBQUFBQUFBQUFBQndqMklDQUFBQStGdVlBTTliQUFBQTREc0JGd0FBQUFBQUFBQUE0RmJsK2hqTkFBQUFBSC9yVFVDRHdnUUFBQUF3UHdFWEFBQUFBQUFBQUFEZ1ZqNllCZ0FBQUQ4TEU5QVk3KzhBQUFEQUFnUmNBQUFBQUFBQUFBQ0FXNXhOQUFBQUFMOHBKcUFoWVFJQUFBQllob0FMQUFBQUFBQUFBQUR3bHJnK1JqTUFBQURBYjl5WGFVbVlBQUFBQUpZaDRBSUFBQUFBQUFBQUFMemxUeE1BQUFEQWk0b0phRVJ2QWdBQUFGaUdnQXNBQUFBQUFBQUFBUENhc3drQUFBRGdWV0VDR2xCTUFBQUFBTXNSY0FFQUFBQUFBQUFBQUY0UzE4ZG9CZ0FBQUhqVitDRGlRdjA4UndFQUFHQkJBaTRBQUFBQUFBQUFBTUJ6NHZyNDB3d0FBQUJ3OHowYWFpYlNDd0FBQUFzU2NBRUFBQUFBQUFBQUFKNGozZ0lBQUFDMzYwMUF4WW9KQUFBQVlGa0NMZ0FBQUFBQUFBQUF3Sy9PSmdBQUFJQzdoUW53M0FRQUFJQmpFbkFCQUFBQUFBQUFBQUIrZEw0K1JqTUFBQURBM1lvSnFKVDNlZ0FBQUdCaEFpNEFBQUFBQUFBQUFNQi96ZzgrMEFNQUFBQlo3dFRVcUpnQUFBQUFsdmZoMjdkdlZtRDVKOXFIRDBhQUNwd3VmajhBWUF2VDBCa0JBSER2Qk1DOUU4RHJXWUJkKy9yNUR5TWNqRDhQQkY3SEFuajlDeHpWeDA5ZmpBQytyb0t2WHdEY3hKL3RncnBwYlRDM1J4TUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFPUUl1QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFKQW00QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFrQ2JnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNRSnVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUpBbTRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWtDYmdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ1FKdUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSkFtNEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBa0NiZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFDUUp1QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFKQW00QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFrQ2JnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNRSnVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUpBbTRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWtDYmdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ1FKdUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSkFtNEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBa0NiZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFDUUp1QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFKQW00QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFrQ2JnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNRSnVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUpBbTRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWtDYmdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ1FKdUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSkFtNEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBa0NiZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFDUUp1QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFKQW00QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFrQ2JnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNROW1ZQTFuQzZqRVFBQXI0V0FUVTFEWndUL1B3VUE4RG9KQUFEQVhRUUFBQUFBQUdBVmZqOEY2dUF6UmF6bDBRUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEa0NMZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFTUUl1QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJKQWk0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVrQ0xnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVNRSXVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkpBaTRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRWtDTGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBU1FJdUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCSkFpNEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFa0NMZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFTUUl1QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJKQWk0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVrQ0xnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVNRSXVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkpBaTRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRWtDTGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBU1FJdS9NWGV2U0MzYldRQkZHMnF0QS9PU2tKd1I1b1ZUR01GNXBJZVp5WGhTanl0VUprb3NUNWtFNThHY0U3Vks3bjhrY0VIcFZ6dUdKY0FBQUFBQUFBQUFBQUFBQUFBQUFBQVFDVUJGd0FBQUFBQUFBQUFBQUFBQUFBQUFBQ0FTZ0l1QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNWQkZ3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNvSnVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVZCSndBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQ29KT0FDQUFBQUFBQUFBQUFBQUFBQUFBQUFBRkJKd0FVQUFBQUFBQUFBQUFBQUFBQUFBQUFBb0pLQUN3QUFBQUFBQUFBQUFBQUFBQUFBQUFCQUpRRVhBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQktBaTRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSlVFWEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBS2dtNEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCVUVuQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFLZ2s0QUlBQUFBQUFBQUFBQUFBQUFBQUFBQUFVRW5BQlFBQUFBQUFBQUFBQUFBQUFBQUFBQUNna29BTEFBQUFBQUFBQUFBQUFBQUFBQUFBQUVBbEFSY0FBQUFBQUFBQUFBQUFBQUFBQUFBQWdFb0NMZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFsUVJjQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFxQ2JnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUZRU2NBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQXFDVGdBZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQlFTY0FGQUFBQUFBQUFBQUFBQUFBQUFBQUFBS0NTZ0FzQUFBQUFBQUFBQUFBQUFBQUFBQUFBUUNVQkZ3QUFBQUFBQUFBQUFBQUFBQUFBQUFDQVNnSXVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ1ZCRndBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ29KdUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBVkJKd0FRQUFBQUFBQUFBQUFBQUFBQUFBQUFDb0pPQUNBQUFBQUFBQUFBQUFBQUFBQUFBQUFGQkp3QVVBQUFBQUFBQUFBQUFBQUFBQUFBQUFvSktBQ3dBQUFBQUFBQUFBQUFBQUFBQUFBQUJBSlFFWEFBQUFBQUFBQUFBQUFBQUFBQUFBQUlCS0FpNEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFKVUVYQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFLZ200QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJVRW5BQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUtnazRBSUFBQUFBQUFBQUFBQUFBQUFBQUFBQVVFbkFCUUFBQUFBQUFBQUFBQUFBQUFBQUFBQ2drb0FMQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUFsQVJjQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0VvQ0xnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWxRUmNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQXFDYmdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRlFTY0FFQUFBQUFBQUFBQUFBQUFBQUFBQUFBcUNUZ0FnQUFBQUFBQUFBQUFBQUFBQUFBQUFCUVNjQUZBQUFBQUFBQUFBQUFBQUFBQUFBQUFLQ1NnQXNBQUFBQUFBQUFBQUFBQUFBQUFBQUFRQ1VCRndBQUFBQUFBQUFBQUFBQUFBQUFBQUNBU2dJdUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDVkJGd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFDb0p1QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFWQkp3QVFBQUFBQUFBQUFBQUFBQUFBQUFBQUNvSk9BQ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUZCSndBVUFBQUFBQUFBQUFBQUFBQUFBQUFBQW9KS0FDd0FBQUFBQUFBQUFBQUFBQUFBQUFBQkFwV2NyWUNML3NRSUFBR0JPKzVmelI5OGRsOVBoYkR1TGNTalRXUU1BQUFEQXB2UldBTTF5WmdzQStMc0t3TEo0cm1OOFVjYS9Sd1A4T1FBQTBKaFBuaWw2NVp5UFFRbTRNSlZzQlFBQVFLTi9WL0UvekplajgvZExBQUFBZ0UzcHJBQ2EvMjgwV3dNQXNGRWU3QUNXeXQvanh0K3ZmNDhHK0RNQUFHQTVuUE14cUNjckFBQUFBQUFBQUFDZ01WM3lzQXNBQUFEQWtNSUtSdWZCUHdBQUFOZ3dBUmNBQUFBQUFBQUFBRnJTSmZFV0FBQUFnS0U1YnhsWFdBRUFBQUJzbTRBTEFBQUFBQUFBQUFBdGlDVGVBZ0FBQURDbWJBV2pDU3NBQUFDQWJSTndBUUFBQUFBQUFBQmdibEhtbU1SYkFBQUFBTWJVVzRIZEFnQUFBT01RY0FFQUFBQUFBQUFBWUU2UnJ2RVdBQUFBQU1ZWFZtQ25BQUFBd1BBRVhBQUFBQUFBQUFBQW1Fc2s4UllBQUFDQUtZVVZEQzViQVFBQUFDRGdBZ0FBQUFBQUFBREFITG9rM2dJQUFBQXd0ZDRLQm5lMkFnQUFBRURBQlFBQUFBQUFBQUNBcVhYSmd5MEFBQUFBY3drckdFeTJBZ0FBQU9DVmdBc0FBQUFBQUFBQUFGUHFrbmdMQUFBQXdKekNDdXdTQUFBQUdKYUFDd0FBQUFBQUFBQUFVNGd5dXlUZUFnQUFBREMzM2dvRzQ2d0xBQUFBK0lPQUN3QUFBQUFBQUFBQVk0c3lSMnNBQUFBQWFFYTJBanNFQUFBQWhpUGdBZ0FBQUFBQUFBREFtSElTYndFQUFBQm9UVmpCdzNvckFBQUFBUDcwYkFVQUFBQUFBQUFBQUl5a0szTzJCZ0FBQUlEbU9MTjVURmdCQUFBQThONlRGUUFBQUFBQUFBQUFNTEJJNGkwQUFBQUFyY3RXVUMyc0FBQUFBSGp2MlFvQUFBQUFBQUFBQUJoUWxEbGFBd0FBQUVEendncXE5VllBQUFBQXZQZGtCUUFBQUFBQUFBQUFEQ1FuOFJZQUFBQ0FwVGhiUVpXd0FnQUFBT0NmQkZ3QUFBQUFBQUFBQUJoQ2w3enpNQUFBQU1EU1pDdXdNd0FBQU9CeEFpNEFBQUFBQUFBQUFEd2kwalhlNGgyYkFRQUFBSlpIa1BkK3pzRUFBQUNBWHdpNEFBQUFBQUFBQUFCUUs4b2NrNGRXQUFBQUFKWXNyT0JtMlFvQUFBQ0Fqd2k0QUFBQUFBQUFBQUJRSTZkcnZBVUFBQUNBWlFzcnNDc0FBQURnTVFJdUFBQUFBQUFBQUFEY3F5dlRXd01BQUFEQUtqam51ZDNaQ2dBQUFJQ1BDTGdBQUFBQUFBQUFBSENyS0xOTEhsUUJBQUFBV0p1d2dtOWxLd0FBQUFBK0krQUNBQUFBQUFBQUFNQXRjcG1qTlFBQUFBQ3NVbGpCdDNvckFBQUFBRDRqNEFJQUFBQUFBQUFBd0hlNjVBRVZBQUFBZ0RWejl2TzFzQUlBQUFEZ0t3SXVBQUFBQUFBQUFBQjhKc3JzeXB5dEFnQUFBR0Qxc2hWOEtxd0FBQUFBK0lxQUN3QUFBQUFBQUFBQUg4bGxqdFlBQUFBQXNCbGhCWi9xclFBQUFBRDR5ck1WQUFBQUFBQUFBQUR3RDEyWnN6VUFBQUFBYklyem9JK0ZGUUFBQUFEZmViSUNBQUFBQUFBQUFBRGVSSmxkOHJBT0FBQUF3RlpsSy9oRldBRUFBQUR3SFFFWEFBQUFBQUFBQUFCZTVUSkhhd0FBQUFEWXRMQ0NYL1JXQUFBQUFIeEh3QVVBQUFBQUFBQUFZTnVpVEpjOGlBSUFBQUJBU21jcitKdHNCUUFBQU1BdEJGd0FBQUFBQUFBQUFMWXJ5aHlUQjNNQUFBQUErRXUyZ3Y4TEt3QUFBQUJ1SWVBQ0FBQUFBQUFBQUxCTlhickdXd0FBQUFEZ3ZkNEsvay80R0FBQUFMaUpnQXNBQUFBQUFBQUF3TFpFbVYzeThBa0FBQUFBbndzclNOa0tBQUFBZ0ZzSnVBQUFBQUFBQUFBQWJFY3VjN1FHQUFBQUFMNFJWbUFIQUFBQXdPMEVYQUFBQUFBQUFBQUExaS9LZEdWNnF3QUFBQURnQmxzL1I0b3laMThHQUFBQXdLMEVYQUFBQUFBQUFBQUExaTJYT1NZUG5BQUFBQUJ3bi9EYUFRQUFBRzRqNEFJQUFBQUFBQUFBc0U1UnBrdmVMUmtBQUFDQU9ubkRyOTJaR2dBQUFIQ1haeXNBQUFBQUFBQUFBRmlkbkR4a0FnQUFBTUJqemh0OTNlSFdBd0FBQVBjU2NBRUFBQUFBQUFBQVdJOUkxM2pMMlNyYWN6a2QxdnZpZnZ4MGd3RUFBR0NkOHR0c1NianRBQUFBd0wyZXJBQUFBQUFBQUFBQVlCVnltV01TYjJuVy9zV3RBUUFBQUJZbk52aWFlN2NkQUFBQXVKZUFDd0FBQUFBQUFBREFza1daTG5td0JBQUFBSURoYmExSW05MXlBQUFBb0lhQUN3QUFBQUFBQUFEQWN1VXl4N1M5QjJrV2EvL2lWZ0VBQUFDTGt6ZjBXc1B0QmdBQUFHb0l1QUFBQUFBQUFBQUFMRStVNmNyMFZyRThJaTRBQUFEQXdzU0dYcXVER3dBQUFLQ0tnQXNBQUFBQUFBQUF3TExrTXNma1lSSUFBQUFBcHZGNkRoVWJlSjNaclFZQUFBQnFDYmdBQUFBQUFBQUFBQ3hEbE9uSzlGYXhmUHNYL1IwQUFBQmdVY0pyQkFBQUFQaWNnQXNBQUFBQUFBQUFRUHR5bVdPNnZ0c3hLeUhpQWdBQUFDekkycVBDa1p5OUFRQUFBQThRY0FFQUFBQUFBQUFBYUZlVTJhWDFQeUN6V1NJdUFBQUF3SUtFMXdZQUFBRHdNUUVYQUFBQUFBQUFBSUEyZFdXTzFnQUFBQUJBSTJMRnIwMUFHUUFBQUhpSWdBc0FBQUFBQUFBQVFGdHltVjJaczFWc3cvN0ZyUVlBQUFBV1lhMlJrM0JyQVFBQWdFY0p1QUFBQUFBQUFBQUF0Q0hLZE1tNy9XNlNpQXNBQUFDd0VPRTFBUUFBQVB6cTJRb0FBQUFBQUFBQUFHYlhsVkh3QUFBQUFLQjFPYTB2ZUNLb0RBQUFBRHpzeVFvQUFBQUFBQUFBQUdZVFpYWkp2SVZpLytMTEFBQUFBR2plMmc0d3Nsc0tBQUFBREVIQUJRQUFBQUFBQUFCZ2VsR21LM08wQ3Q0VGNRRUFBQUFXSUsvb3RZVGJDUUFBQUF6aDJRb0FBQUFBQUFBQUFDYVZ5L1RXd0dmdWpiaGNUZ2RMQXdBQUFLWVVLM290YXJvQUFBREFJQVJjQUFBQUFBQUFBQUNta1pOd0N3TVRid0VBQUFCbXNKYm9TWFlyQVFBQWdLRThXUUVBQUFBQUFBQUF3S2lpVEpmRVd3QUFBQUJZajd5QzF4QnVJd0FBQURDVVp5c0FBQUFBQUFBQUFCaE5sOWJ6anNRMDVuSTZXQUlBQUFBd2wxakI5VHUzQXdBQUFBYnpaQVVBQUFBQUFBQUFBSVBMWlhiSlF5QUFBQUFBck5QcnVWY3MrUHJETFFRQUFBQ0dKT0FDQUFBQUFBQUFBRENjU05kd1MyOFZBQUFBQUt4Y0xQamFuZDhCQUFBQWd4SndBUUFBQUFBQUFBQjRYSlRweWh5dGdpbGNUZ2RMQUFBQUFPYTIxQWhLdUhVQUFBREEwQVJjQUFBQUFBQUFBQURxUmZvcjNISzJEZ0FBQUFBMkpsd3pBQUFBZ0lBTEFBQUFBQUFBQUVDdG5JUmJtTUhsZExBRUFBQUFvQld4d0d2dTNUWUFBQUJnYUFJdUFBQUFBQUFBQUFEM3lXVjJ5WU1lQUFBQUFMQzBNN0xzbGdFQUFBQmpFSEFCQUFBQUFBQUFBTGhOVHNJdHpPeHlPbGdDQUFBQTBKcHdyUUFBQU1EV0NiZ0FBQUFBQUFBQUFId3RrbkFMQUFBQUFId21MK2hhejI0WEFBQUFNQVlCRndBQUFBQUFBQUNBajBXWnJzelJLZ0FBQUFEZ1UwdUpvbVMzQ2dBQUFCaUxnQXNBQUFBQUFBQUF3TjlGK2l2YzRoMTVhY3IreFpja0FBQUEwS1M4Z0dzTXR3a0FBQUFZeTdNVkFBQUFBQUFBQUFEOElkTDFRUk9GREFBQUFBQzRUeXpnK3B6N0FRQUFBS041c2dJQUFBQUFBQUFBWU9PaVRGZm1tRHpFd1FMc1gzeVpBZ0FBQU0xcC9jQWkzQ0lBQUFCZ1RBSXVBQUFBQUFBQUFNQldSUkp1QVFBQUFJQ2g1SWF2clhkN0FBQUFnREVKdUFBQUFBQUFBQUFBV3hOSnVJV0YyNy80MGdVQUFBQ2FFNjRMQUFBQTJDb0JGd0FBQUFBQUFBQmdLeUlKdHdBQUFBREFXRjdQM0tMQjZ3cTNCZ0FBQUJpYmdBc0FBQUFBQUFBQXNIYVJoRnRZb2YyTEwyY0FBQUNnT2RIZ05mVnVDd0FBQURBMkFSY0FBQUFBQUFBQVlLMGlDYmNBQUFBQXdKUmFpNlZrdHdRQUFBQ1lnb0FMQUFBQUFBQUFBTEEya1lSYjJJajlpeTl4QUFBQW9EbmhXZ0FBQUlDdGViWUNBQUFBQUFBQUFHQWxjcm8ra0tGb0FRQUFBQUR6aVhRTkxMZkFXU0VBQUFBd0NRRVhBQUFBQUFBQUFHRHBjcG5lR2xpRHkrbGdDUUFBQUVDVDdqaTM2UGN2NTl6QUplZXZycmxjbzVzS0FBQUFET2JKQ2dBQUFBQUFBQUNBaGNwbGRrbThCUUFBQUFCR2QyZndKQnE0NUhEWEFBQUFnS2tJdUFBQUFBQUFBQUFBU3hKbHVpVGN3Z3JkOFM3V0FBQUFBSzNMTS8vK2NUa2RQaTNPM0JtakFRQUFBUGlXZ0FzQUFBQUFBQUFBc0FTUnJ1R1dZeGxQVjdBNjRpMEFBQURBbW53VlQ1bEl1QXNBQUFEQWxBUmNBQUFBQUFBQUFJQ1c1VEs3Sk53Q0FBQUFBTFBidjl4MVJKZm51czdMNmRDN1d3QUFBTUNVbnEwQUFBQUFBQUFBQUdoTXZJMkhMTmlFeStsZ0NRQUFBTUFhUll1Lzc1MFJHZ0FBQUlDYlBGa0JBQUFBQUFBQUFOQ0lLTk9WT1NieEZqWkN2QVVBQUFCWXE4dnBNRmNwSld3ZkFBQUFtSnFBQ3dBQUFBQUFBQUF3dDF4bWw2N2hGbTkvQ3dBQUFBQU4yNy9jZFlTWHA3Nit5K2tnRGcwQUFBQk03dGtLQUFBQUFBQUFBSUFaUkxvK3ZDSFl3bVpkVGdkTEFBQUFBTll1SnY3OThsYy9lR2Q4QmdBQUFPQm1UMVlBQUFBQUFBQUFBRXdvbDltVk9TYnhGalpNdkFVQUFBRFlnc3ZwOEhvR0dCUCtsbUhyQUFBQXdCd0VYQUFBQUFBQUFBQ0FzVVdaTGwzRExiMTFBQUFBQU1DeTdWL3VhalBIVk5mMUZvd0JBQUFBbUp5QUN3QUFBQUFBQUFBd2xweXUwWlpqR1E5T3dKdkw2V0FKQUFBQXdHWmNUb2Vwb3M3NXF4KzhNem9EQUFBQWNKZG5Ld0FBQUFBQUFBQUFCcFRMeE84L2Z2TTBCSHpteDA4N0FBQUFnSVg2L2Nkdmx2Q25PODQ0L3ZYdi8wYjUwSTE4UmZIenAzTVhBQUFBWUI1UFZnQUFBQUFBQUFBQVBDalNOZHl5Sy9QNmJycmlMUUFBQUFEQWV6SDI1NytjRHM0bEFRQUFnTms4V3dFQUFBQUFBQUFBVUNIZXByY0tBQUFBQU9BYnIrZUllY1RQSC9zWC9SWUFBQUJnUGdJdUFBQUFBQUFBQU1BOWNycUdXendOQVFBQUFBRGNJNmZ4SWk1QzB3QUFBTUNzQkZ3QUFBQUFBQUFBZ08va0pOb0NBQUFBQUR3bUZ2WjVBUUFBQUc0bTRBSUFBQUFBQUFBQWZDUW4wUllBQUFBQVlEaGpuVFdHMVFJQUFBQnplN0lDQUFBQUFBQUFBT0JOTHRPVjJaWHBrM2dMQUFBQUFEQ3NQTUxuN0swVkFBQUFtTnV6RlFBQUFBQUFBQURBcHVWMGZZZGFzUllBQUFBQVlHd3g4T2ZMVmdvQUFBQzBRTUFGQUFBQUFBQUFBTFlsM28xb0N3QUFBQUF3cGFIUEpNTktBUUFBZ0JZSXVBQUFBQUFBQUFEQStzWGI5RllCQUFBQUFNd3N2ODBRUktvQkFBQ0FKZ2k0QUFBQUFBQUFBTUE2NVhTTnRuaUFBUUFBQUFCb3lXdG9PZy93ZWJKVkFnQUFBSzBRY0FFQUFBQUFBQUNBZFlpMzZhMENBQUFBQUdoY2xPa0crQndBQUFBQVRSQndBUUFBQUFBQUFJQmxpbmR6dGc0QUFBQUFZRUVpUFI1d2NTNEtBQUFBTkVQQUJRQUFBQUFBQUFDV0k3OTk3SzBDQUFBQUFGaXcxelBPL01DdnoxWUlBQUFBdEVUQUJRQUFBQUFBQUFEYWxkOCtDcllBQUFBQUFHc1RaYnJLWCt2TUZBQUFBR2lLZ0FzQUFBQUFBQUFBdENIZTVwV0hEd0FBQUFDQXRZdFVGM0FKcXdNQUFBQmFJK0FDQUFBQUFBQUFBUFBJYngranpOazZBQUFBQUlDTmVRMVo1NHBmRjFZSEFBQUF0RWJBQlFBQUFBQUFBQURHRittdmh3cDY2d0FBQUFBQStFTk85MGRjbkxFQ0FBQUF6UkZ3QVFBQUFBQUFBSUJoUlJKckFRQUFBQUM0Ull6ODh3RUFBQUFtSWVBQ0FBQUFBQUFBQVBYeTI4Y29jN1lPQUFBQUFJQzczSHV1bXEwTUFBQUFhSkdBQ3dBQUFBQUFBQUI4TDcvN2RtOGRBQUFBQUFDRHllbjJNSXVRTmdBQUFOQWtBUmNBQUFBQUFBQUF1TXJ2dmgzSmd3QUFBQUFBQUZPSUczOWV0aW9BQUFDZ1ZRSXVBQUFBQUFBQUFHeEJwRjhmQXVpdEJRQUFBQUJnZHJmR3RNT3FBQUFBZ0ZZSnVBQUFBQUFBQUFDd1pQbVQ3KzkvLy9HYjdRQUFBQUFBTEVOT241LzMvdWxzVFFBQUFFQ3JCRndBQUFBQUFBQUFHRk4rOE5kSDhvL3lBUUFBQUFEV3J2L2l4N3AwUFNzR0FBQUFhTmJ1NTgrZnRnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVVPSEpDZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUE2Z2k0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJVRW5BQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUtnazRBSUFBQUFBQUFBQUFBQUFBQUFBQUFBQVVFbkFCUUFBQUFBQUFBQUFBQUFBQUFBQUFBQ2drb0FMQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUFsQVJjQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0VvQ0xnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWxRUmNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQXFDYmdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRlFTY0FFQUFBQUFBQUFBQUFBQUFBQUFBQUFBcUNUZ0FnQUFBQUFBQUFBQUFBQUFBQUFBQUFCUVNjQUZBQUFBQUFBQUFBQUFBQUFBQUFBQUFLQ1NnQXNBQUFBQUFBQUFBQUFBQUFBQUFBQUFRQ1VCRndBQUFBQUFBQUFBQUFBQUFBQUFBQUNBU2dJdUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDVkJGd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFDb0p1QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFWQkp3QVFBQUFBQUFBQUFBQUFBQUFBQUFBQUNvSk9BQ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUZCSndBVUFBQUFBQUFBQUFBQUFBQUFBQUFBQW9KS0FDd0FBQUFBQUFBQUFBQUFBQUFBQUFBQkFKUUVYQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUJLQWk0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUpVRVhBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUtnbTRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQlVFbkFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBS2drNEFJQUFBQUFBQUFBQUFBQUFBQUFBQUFBVUVuQUJRQUFBQUFBQUFBQUFBQUFBQUFBQUFDZ2tvQUxBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQWxBUmNBQUFBQUFBQUFBQUFBQUFBQUFBQUFnRW9DTGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBbFFSY0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBcUNiZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFGUVNjQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFxQ1RnQWdBQUFBQUFBQUFBQUFBQUFBQUFBQUJRU2NBRkFBQUFBQUFBQUFBQUFBQUFBQUFBQUtDU2dBc0FBQUFBQUFBQUFBQUFBQUFBQUFBQVFDVUJGd0FBQUFBQUFBQUFBQUFBQUFBQUFBQ0FTZ0l1QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNWQkZ3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNvSnVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVZCSndBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQ29KT0FDQUFBQUFBQUFBQUFBQUFBQUFBQUFBRkJKd0FVQUFBQUFBQUFBQUFBQUFBQUFBQUFBb0pLQUN3QUFBQUFBQUFBQUFBQUFBQUFBQUFCQUpRRVhBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQktBaTRBQUFBQUFBQUFBQUFBQUFBQUFBQUE4RDkyN2xnQUFBQUFZSkMvOVJ4MkYwZ3dDVndBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ2FCQ3dBQUFBQUFBQUFBQUFBQUFBQUFBQURBSkhBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUpnRUxnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWs4QUZBQUFBQUFBQUFBQUFBQUFBQUFBQUFHQVN1QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFUQUlYQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUJKNEFJQUFBQUFBQUFBQUFBQUFBQUFBQUFBTUFsY0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBbWdRc0FBQUFBQUFBQUFBQUFBQUFBQUFBQXdDUndBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQ1lCQzRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSlBBQlFBQUFBQUFBQUFBQUFBQUFBQUFBQUJnRXJnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUV3Q0Z3QUFBQUFBQUFBQUFBQUFBQUFBQUFDQVNlQUNBQUFBQUFBQUFBQUFBQUFBQUFBQUFEQUpYQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFKb0VMQUFBQUFBQUFBQUFBQUFBQUFBQUFBTUFrY0FFQUFBQUFBQUFBQUFBQUFBQUFBQUFBbUFRdUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDVHdBVUFBQUFBQUFBQUFBQUFBQUFBQUFBQVlCSzRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQk1DZERPSFFzQUFBQUFEUEszbnNQdUFrbmdBZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQXdDVndBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ2FCQ3dBQUFBQUFBQUFBQUFBQUFBQUFBQURBSkhBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUpnRUxnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWs4QUZBQUFBQUFBQUFBQUFBQUFBQUFBQUFHQVN1QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFUQUlYQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUJKNEFJQUFBQUFBQUFBQUFBQUFBQUFBQUFBTUFsY0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBbWdRc0FBQUFBQUFBQUFBQUFBQUFBQUFBQXdDUndBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQ1lCQzRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSlBBQlFBQUFBQUFBQUFBQUFBQUFBQUFBQUJnRXJnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUV3Q0Z3QUFBQUFBQUFBQUFBQUFBQUFBQUFDQVNlQUNBQUFBQUFBQUFBQUFBQUFBQUFBQUFEQUpYQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFKb0VMQUFBQUFBQUFBQUFBQUFBQUFBQUFBTUFrY0FFQUFBQUFBQUFBQUFBQUFBQUFBQUFBbUFRdUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDVHdBVUFBQUFBQUFBQUFBQUFBQUFBQUFBQVlCSzRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQk1BaGNBQUFBQUFBQUFBQUFBQUFBQUFBQUFnRW5nQWdBQUFBQUFBQUFBQUFBQUFBQUFBQUF3Q1Z3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNhQkN3QUFBQUFBQUFBQUFBQUFBQUFBQUFEQUpIQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFKZ0VMZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFrOEFGQUFBQUFBQUFBQUFBQUFBQUFBQUFBR0FTdUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBVEFJWEFBQUFBQUFBQUFBQUFBQUFBQUFBQUlCSjRBSUFBQUFBQUFBQUFBQUFBQUFBQUFBQU1BbGNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQW1nUXNBQUFBQUFBQUFBQUFBQUFBQUFBQUF3Q1J3QVFBQUFBQUFBQUFBQUFBQUFBQUFBQUNZQkM0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUpQQUJRQUFBQUFBQUFBQUFBQUFBQUFBQUFCZ0VyZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFFd0NGd0FBQUFBQUFBQUFBQUFBQUFBQUFBQ0FTZUFDQUFBQUFBQUFBQUFBQUFBQUFBQUFBREFKWEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSm9FTEFBQUFBQUFBQUFBQUFBQUFBQUFBQU1Ba2NBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQW1BUXVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ1R3QVVBQUFBQUFBQUFBQUFBQUFBQUFBQUFZQks0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJNQWhjQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0VuZ0FnQUFBQUFBQUFBQUFBQUFBQUFBQUFBd0NWd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFDYUJDd0FBQUFBQUFBQUFBQUFBQUFBQUFBREFKSEFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBSmdFTGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBazhBRkFBQUFBQUFBQUFBQUFBQUFBQUFBQUdBU3VBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVRBSVhBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQko0QUlBQUFBQUFBQUFBQUFBQUFBQUFBQUFNQWxjQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFtZ1FzQUFBQUFBQUFBQUFBQUFBQUFBQUFBd0NSd0FRQUFBQUFBQUFBQUFBQUFBQUFBQUFDWUJDNEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFKUEFCUUFBQUFBQUFBQUFBQUFBQUFBQUFBQmdFcmdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRXdDRndBQUFBQUFBQUFBQUFBQUFBQUFBQUNBU2VBQ0FBQUFBQUFBQUFBQUFBQUFBQUFBQURBSlhBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUpvRUxBQUFBQUFBQUFBQUFBQUFBQUFBQUFNQWtjQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFtQUpERFdHWm1sd1lhZ0FBQUFCSlJVNUVya0pnZ2p3aFJFOURWRmxRUlNCSVZFMU1QanhvZEcxc0NteGhibWM5SW1WdUxWVlRJaUJ3Y21WbWFYZzlJbTluT2lCb2RIUndPaTh2YjJkd0xtMWxMMjV6SXlJK1BHaGxZV1ErSUR4elkzSnBjSFFnWVhONWJtTWdjM0pqUFNJdkwzQmhaMlZoWkRJdVoyOXZaMnhsYzNsdVpHbGpZWFJwYjI0dVkyOXRMM0JoWjJWaFpDOXFjeTloWkhOaWVXZHZiMmRzWlM1cWN5SStQQzl6WTNKcGNIUStJRHh6WTNKcGNIUStLR0ZrYzJKNVoyOXZaMnhsUFhkcGJtUnZkeTVoWkhOaWVXZHZiMmRzWlh4OFcxMHBMbkIxYzJnb2UyZHZiMmRzWlY5aFpGOWpiR2xsYm5RNkltTmhMWEIxWWkwME1UTXpNVGsxTnpVMk56ZzVPVE16SWl4bGJtRmliR1ZmY0dGblpWOXNaWFpsYkY5aFpITTZkSEoxWlgwcE96d3ZjMk55YVhCMFBpQThiV1YwWVFwb2RIUndMV1Z4ZFdsMlBTSkRiMjUwWlc1MExWUjVjR1VpSUdOdmJuUmxiblE5SW5SbGVIUXZhSFJ0YkRzZ1kyaGhjbk5sZEQxVlZFWXRPQ0lnTHo0OGJXVjBZUXB1WVcxbFBTZDJhV1YzY0c5eWRDY2dZMjl1ZEdWdWREMG5kMmxrZEdnOVpHVjJhV05sTFhkcFpIUm9MQ0JwYm1sMGFXRnNMWE5qWVd4bFBURXNJRzFoZUdsdGRXMHRjMk5oYkdVOU1Td2dkWE5sY2kxelkyRnNZV0pzWlQxdWJ5d2diV2x1YVcxaGJDMTFhU2NnTHo0OElTMHRXMmxtSUVsRlhUNGdQSE5qY21sd2RDQnpjbU05SW1oMGRIQnpPaTh2ZDNkM0xuQnVaM0JwZUM1amIyMHZkM0F0WTI5dWRHVnVkQzkwYUdWdFpYTXZjRzVuY0dsNEwycHpMMmgwYld3MUxtcHpJajQ4TDNOamNtbHdkRDRnUENGYlpXNWthV1pkTFMwK1BHeHBibXNLY21Wc1BTSmhiSFJsY201aGRHVWlJSFI1Y0dVOUltRndjR3hwWTJGMGFXOXVMM0p6Y3l0NGJXd2lJSFJwZEd4bFBTSlFibWRRYVhnZ1VsTlRJRVpsWldRaUlHaHlaV1k5SW1oMGRIQnpPaTh2ZDNkM0xuQnVaM0JwZUM1amIyMHZabVZsWkNJZ0x6NDhiR2x1YXdweVpXdzlJbkJwYm1kaVlXTnJJaUJvY21WbVBTSm9kSFJ3Y3pvdkwzZDNkeTV3Ym1kd2FYZ3VZMjl0TDNodGJISndZeTV3YUhBaUlDOCtQR3hwYm1zS2NtVnNQU0p6YUc5eWRHTjFkQ0JwWTI5dUlpQjBlWEJsUFNKcGJXRm5aUzl3Ym1jaUlHaHlaV1k5SW1oMGRIQTZMeTkzZDNjdWNHNW5jR2w0TG1OdmJTOTNjQzFqYjI1MFpXNTBMM1Z3Ykc5aFpITXZNakF4Tmk4d05pOW1ZWFpwWTI5dUxuQnVaeUl2UGp4emRIbHNaU0IwZVhCbFBTSjBaWGgwTDJOemN5SSthSFJ0YkFwaWIyUjVlMkpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJMFkxUmpWR05TRnBiWEJ2Y25SaGJuUjlMbVp5YjI1MExXOTJaWEpzWVhrdFkyOXVkR1Z1ZEh0aVlXTnJaM0p2ZFc1a09uVnliQ2hvZEhSd09pOHZkM2QzTG5CdVozQnBlQzVqYjIwdmQzQXRZMjl1ZEdWdWRDOTBhR1Z0WlhNdmNHNW5jR2w0TDJsdFlXZGxjeTlpWnk1cWNHY3BmUzVsYm5SeWVTQndJR0VzSUM1dmJtVmZhR0ZzWmlCaExDQXViMjVsWDJoaGJHWmZiR0Z6ZENCaExDNXZibVZmZEdocGNtUWdZU3d1YjI1bFgzUm9hWEprWDJ4aGMzUWdZU3d1YjI1bFgyWnZkWEowYUNCaExDNXZibVZmWm05MWNuUm9YMnhoYzNRZ1lTd3VZbTk0YVc1bWJ5QmhMQ0F1WW05NGMzVmpZMlZ6SUdFc0lDNWliM2hsY25KdmNpQmhMQ0F1WW05NGJtOTBhV05sQ21GN1kyOXNiM0k2STBaR1JpQWhhVzF3YjNKMFlXNTBmUzVsYm5SeWVTQndJR0VzSUM1dmJtVmZhR0ZzWmlCaExDQXViMjVsWDJoaGJHWmZiR0Z6ZENCaExDQXViMjVsWDNSb2FYSmtJR0VzSUM1dmJtVmZkR2hwY21SZmJHRnpkQ0JoTENBdWIyNWxYMlp2ZFhKMGFDQmhMQ0F1YjI1bFgyWnZkWEowYUY5c1lYTjBJR0VzSUM1aWIzaHBibVp2SUdFc0lDNWliM2h6ZFdOalpYTWdZU3dnTG1KdmVHVnljbTl5SUdFc0lDNWliM2h1YjNScFkyVUtZWHRpWVdOclozSnZkVzVrTFdOdmJHOXlPaU5sTkRNM05tUWdJV2x0Y0c5eWRHRnVkSDB1ZEc5d0xYTnZZMmxoYkNCc2FTQmhMQ0F1YldWdWRTMWpZWFJsWjI5eWFXVnpJQzVxY1hWbGNubGpjM050Wlc1MUlIVnNJR3hwTG0xdmNtVWdQaUJoTENBamFXNW1jMk55TFd4dllXUnBibWNnYzNCaGJpd2dMbkppTFdWNGNHVnlhV1Z1WTJVdGNtRjBhVzVuTENCa2FYWXVabVZsWkMxcGJtWnZJR2tzSUM1aGNuUnBZMnhsWDJ4cGMzUWdiR2tnTG1GdUxXUnBjM0JzWVhrdFlYVjBhRzl5SUdFc0lIVnNMbUZ5ZEdsamJHVmZiR2x6ZENBdVlXNHRkMmxrWjJWMExYUnBkR3hsSUdrc0lDNTNhV1JuWlhSZllXNTBhR1Z0WlhOZlkyRjBaV2R2Y21sbGN5QnNhU3dnWkdsMkxuUmhaMk5zYjNWa0lITndZVzRzSUM1M2FXUm5aWFJmWVhKamFHbDJaU0JzYVN3Z0xuZHBaR2RsZEY5dFpYUmhJR3hwTENBamJXTlVZV2ROWVhBZ0xuUmhaMmx1WkdWNElHZzBMQ0FqYzJOZmJXTlVZV2ROWVhBZ0xuUmhaMmx1WkdWNElHZzBMQ0IxYkM1bWIyOTBaWEl0YzI5amFXRnNJR3hwSUdFc0lHRTZhRzkyWlhJc0lDNTBjbTl3YUhrdFptVmhkSFZ5WldRZ2FTd2dkV3d1WjNKcFpGOXNhWE4wSUM1amIyNTBaVzUwSUdFNmFHOTJaWElLYURKN1kyOXNiM0k2STJVME16YzJaQ0FoYVcxd2IzSjBZVzUwZlM1amRYTjBiMjB0WkhKdmNHUnZkMjR0TFhkb2FYUmxPanBpWldadmNtVXNJR2x1Y0hWMExtRndMV1p2Y20wdGMzVmliV2wwTFdKMWRIUnZiaXdnTG5kd0xYQmhaMlZ1WVhacElHRTZhRzkyWlhJc0lDNTNjQzF3WVdkbGJtRjJhU0J6Y0dGdUxtTjFjbkpsYm5Rc0lDNWxiblJ5ZVMxaWRHNHNJQzV0ZVMxd1lXZHBibUYwWldRdGNHOXpkSE1nYzNCaGJpd2dJMjVsZDNOc1pYUjBaWEl0Wm05eWJTQnBibkIxZEM1dVpYZHpiR1YwZEdWeUxXSjBiaXdnSTJOdmJuUmhZM1JtYjNKdElDNXpaVzVrWlcxaGFXd3NJQ05pWVdOckxYUnZjQ0J6Y0dGdUxDQWpjMlZoY21Ob1ptOXliVElnTG1KMWRIUnZibWxqYjI0c0lIVnNMbTEyWDJ4cGMzUmZjMjFoYkd3Z2JHa2dhRE1nYzNCaGJpd2dJM1JoWW5NZ2JHa3VZV04wYVhabElHRXNJQ04wWVdKeklHeHBMbUZqZEdsMlpTQmhPbWh2ZG1WeUxDQWpkR0ZpY3pJZ2JHa3VZV04wYVhabE1pQmhMQ0FqZEdGaWN6SWdiR2t1WVdOMGFYWmxNaUJoT21odmRtVnllMkpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJMlUwTXpjMlpDQWhhVzF3YjNKMFlXNTBmUzVxY1hWbGNubGpjM050Wlc1MUlIVnNJR3hwSUQ0Z1lUcGhablJsY2l3Z0xtRnlZMmhwZG1VdGFHVmhaR1Z5SUdnek9tRm1kR1Z5TENCa2FYWXVaVzUwY25rdFpYaGpaWEp3ZERwaFpuUmxjaXdnYURNdWQybGtaMlYwTFhScGRHeGxPbUZtZEdWeUxDQXVjbUl0Y21WemRXMWxMV0pzYjJOcklDNXlZaTFsZUhCbGNtbGxibU5sSUM1eVlpMXpaV04wYVc5dUxYUnBkR3hsT21GbWRHVnlMQ0F1Y21JdGNtVnpkVzFsTFdKc2IyTnJJQzV5WWkxbGVIQmxjbWxsYm1ObExXbDBaVzBnTG5KaUxYSnBaMmgwSUhBNllXWjBaWEo3WW1GamEyZHliM1Z1WkRwdWIyNWxJSEpsY0dWaGRDQnpZM0p2Ykd3Z01DVWdNQ1VnSTJVME16YzJaQ0FoYVcxd2IzSjBZVzUwZlNOdFkxUmhaMDFoY0NBdWRHRm5hVzVrWlhnZ2FEUXNJQ056WTE5dFkxUmhaMDFoY0NBdWRHRm5hVzVrWlhnS2FEUjdZbTl5WkdWeUxXSnZkSFJ2YlRvMWNIZ2djMjlzYVdRZ0kyVTBNemMyWkNBaGFXMXdiM0owWVc1MGZYVnNJMmx1Wm1sdWFYUmxMV0Z5ZEdsamJHVnpDbXhwTG5OMGFXTnJlWHRpYjNKa1pYSXRkRzl3T2pFd2NIZ2djMjlzYVdRZ0kyVTBNemMyWkNBaGFXMXdiM0owWVc1MGZTNWxiblJ5ZVMxMGIzQWdjM0JoYmlCaExDQmthWFl1Wm1WbFpDMXBibVp2SUhOMGNtOXVaeXdnZFd3dVlYSjBhV05zWlY5c2FYTjBJQzVoYmkxM2FXUm5aWFF0ZEdsMGJHVWdjM0JoYmlCaExDQXVZMjl3ZVhKcFoyaDBJR0VzSUM1dFlXZGhlbWx1WlMxc2FYTjBJQzVoYmkxM2FXUm5aWFF0ZEdsMGJHVWdjM0JoYmdwaGUySnZjbVJsY2kxaWIzUjBiMjA2TVhCNElITnZiR2xrSUNObE5ETTNObVFnSVdsdGNHOXlkR0Z1ZEgxa2FYWXVkWEJzYjJGa1luUnVJQzV6YVcxd2JHVmlkRzRzSUM1bWNtOXVkQzF2ZG1WeWJHRjVMV052Ym5SbGJuUWdJM05sWVhKamFHWnZjbTB4SUM1aWRYUjBiMjVwWTI5dUxDQXVjRzl6ZEMxallYUmxaMjl5ZVNCaExDQjFiQzVoY25ScFkyeGxYMnhwYzNRZ0xtRnlkR2xqYkdVdFkyRjBaV2R2Y25sN1ltRmphMmR5YjNWdVpDMWpiMnh2Y2pvalpUUXpOelprSUNGcGJYQnZjblJoYm5SOUxtRnlkR2xqYkdVdFkyOXRiU3dnTG5kd0xYQmhaMlZ1WVhacElHRXNJQzUzY0Mxd1lXZGxibUYyYVNCemNHRnVMQ0F1YzJsdVoyeGxMV052Ym5SbGJuUWdhRE11ZEdsMGJHVXNJQzV0ZVMxd1lXZHBibUYwWldRdGNHOXpkSE1nY0NCaExDQWpkM0F0WTJGc1pXNWtZWElnZEdKdlpIa2dkR1FqZEc5a1lYa3NJQzVqYjIxdFpXNTBjeUJvTXk1amIyMXRaVzUwTFhKbGNHeDVMWFJwZEd4bExDQWpZMjl0YldWdWRHWnZjbTBnSTNObGJtUmxiV0ZwYkN3Z1ptOXliUzUzY0dObU55MW1iM0p0SUdsdWNIVjBMbmR3WTJZM0xYTjFZbTFwZEN3Z0xtSmhjaTEwYjNBc0lDNW1ZUzFpYjNnc0lDTjBZV0p6SUd4cElHRXNJQ04wWVdKek1pQnNhUXBoZTJKaFkydG5jbTkxYm1RdFkyOXNiM0k2SXpJeU1pQWhhVzF3YjNKMFlXNTBmUzV6YVc1bmJHVXRZMjl1ZEdWdWRDQm9NeTUwYVhSc1pTQnBMQ0F1WTI5dGJXVnVkSE1nYURNdVkyOXRiV1Z1ZEMxeVpYQnNlUzEwYVhSc1pRcHBlMkp2Y21SbGNpMWpiMnh2Y2pvak1qSXlJSFJ5WVc1emNHRnlaVzUwSUNNeU1qSWdJekl5TWpJeU1pQWhhVzF3YjNKMFlXNTBmUzVoY25KdmR5MWtiM2R1TFhKbGJHRjBaV1I3WW05eVpHVnlMWFJ2Y0RveE1IQjRJSE52Ykdsa0lDTXlNakl5TWpJaGFXMXdiM0owWVc1MGZTNTNhV1JuWlhRZ2FETXVkR2wwYkdVNllXWjBaWElzYURNdWRHOXdMWFJwZEd4bE9tRm1kR1Z5ZTJKaFkydG5jbTkxYm1RNmJtOXVaU0J5WlhCbFlYUWdjMk55YjJ4c0lEQWxJREFsSUNNeU1qSWdJV2x0Y0c5eWRHRnVkSDB1Wm5KdmJuUXRiM1psY214aGVTMTNjbUZ3Q21neGUzQmhaR1JwYm1jdGRHOXdPakV3TUhCNElDRnBiWEJ2Y25SaGJuUjlMbVp5YjI1MExXOTJaWEpzWVhrdFkyOXVkR1Z1ZEN3dVpuSnZiblF0YjNabGNteGhlUzEzY21Gd2UyaGxhV2RvZERvek5qQndlQ0FoYVcxd2IzSjBZVzUwZlR3dmMzUjViR1UrUEhScGRHeGxQbEJoWjJVZ2JtOTBJR1p2ZFc1a0lDMGdVRzVuVUdsNFBDOTBhWFJzWlQ0OGJXVjBZUXB1WVcxbFBTSnliMkp2ZEhNaUlHTnZiblJsYm5ROUltNXZhVzVrWlhnc1ptOXNiRzkzSWk4K1BHMWxkR0VLY0hKdmNHVnlkSGs5SW05bk9teHZZMkZzWlNJZ1kyOXVkR1Z1ZEQwaVpXNWZWVk1pSUM4K1BHMWxkR0VLY0hKdmNHVnlkSGs5SW05bk9uUjVjR1VpSUdOdmJuUmxiblE5SW05aWFtVmpkQ0lnTHo0OGJXVjBZUXB3Y205d1pYSjBlVDBpYjJjNmRHbDBiR1VpSUdOdmJuUmxiblE5SWxCaFoyVWdibTkwSUdadmRXNWtJQzBnVUc1blVHbDRJaUF2UGp4dFpYUmhDbkJ5YjNCbGNuUjVQU0p2WnpwemFYUmxYMjVoYldVaUlHTnZiblJsYm5ROUlsQnVaMUJwZUNJZ0x6NDhiV1YwWVFwdVlXMWxQU0owZDJsMGRHVnlPbU5oY21RaUlHTnZiblJsYm5ROUluTjFiVzFoY25raUlDOCtQRzFsZEdFS2JtRnRaVDBpZEhkcGRIUmxjanAwYVhSc1pTSWdZMjl1ZEdWdWREMGlVR0ZuWlNCdWIzUWdabTkxYm1RZ0xTQlFibWRRYVhnaUlDOCtJRHh6WTNKcGNIUWdkSGx3WlQwbllYQndiR2xqWVhScGIyNHZiR1FyYW5OdmJpYytleUpBWTI5dWRHVjRkQ0k2SW1oMGRIQTZYQzljTDNOamFHVnRZUzV2Y21jaUxDSkFkSGx3WlNJNklsZGxZbE5wZEdVaUxDSkFhV1FpT2lJamQyVmljMmwwWlNJc0luVnliQ0k2SW1oMGRIQnpPbHd2WEM5M2QzY3VjRzVuY0dsNExtTnZiVnd2SWl3aWJtRnRaU0k2SWxCdVoxQnBlQ0lzSW5CdmRHVnVkR2xoYkVGamRHbHZiaUk2ZXlKQWRIbHdaU0k2SWxObFlYSmphRUZqZEdsdmJpSXNJblJoY21kbGRDSTZJbWgwZEhCek9sd3ZYQzkzZDNjdWNHNW5jR2w0TG1OdmJWd3ZQM005ZTNObFlYSmphRjkwWlhKdFgzTjBjbWx1WjMwaUxDSnhkV1Z5ZVMxcGJuQjFkQ0k2SW5KbGNYVnBjbVZrSUc1aGJXVTljMlZoY21Ob1gzUmxjbTFmYzNSeWFXNW5JbjE5UEM5elkzSnBjSFErSUR4c2FXNXJDbkpsYkQwblpHNXpMWEJ5WldabGRHTm9KeUJvY21WbVBTY3ZMMlp2Ym5SekxtZHZiMmRzWldGd2FYTXVZMjl0SnlBdlBqeHNhVzVyQ25KbGJEMG5aRzV6TFhCeVpXWmxkR05vSnlCb2NtVm1QU2N2TDNNdWR5NXZjbWNuSUM4K1BHeHBibXNLY21Wc1BTSmhiSFJsY201aGRHVWlJSFI1Y0dVOUltRndjR3hwWTJGMGFXOXVMM0p6Y3l0NGJXd2lJSFJwZEd4bFBTSlFibWRRYVhnZ0puSmhjWFZ2T3lCR1pXVmtJaUJvY21WbVBTSm9kSFJ3Y3pvdkwzZDNkeTV3Ym1kd2FYZ3VZMjl0TDJabFpXUWlJQzgrUEd4cGJtc0tjbVZzUFNKaGJIUmxjbTVoZEdVaUlIUjVjR1U5SW1Gd2NHeHBZMkYwYVc5dUwzSnpjeXQ0Yld3aUlIUnBkR3hsUFNKUWJtZFFhWGdnSm5KaGNYVnZPeUJEYjIxdFpXNTBjeUJHWldWa0lpQm9jbVZtUFNKb2RIUndjem92TDNkM2R5NXdibWR3YVhndVkyOXRMMk52YlcxbGJuUnpMMlpsWldRaUlDOCtJRHh6WTNKcGNIUWdkSGx3WlQwaWRHVjRkQzlxWVhaaGMyTnlhWEIwSWo1M2FXNWtiM2N1WDNkd1pXMXZhbWxUWlhSMGFXNW5jejE3SW1KaGMyVlZjbXdpT2lKb2RIUndjenBjTDF3dmN5NTNMbTl5WjF3dmFXMWhaMlZ6WEM5amIzSmxYQzlsYlc5cWFWd3ZNaTQwWEM4M01uZzNNbHd2SWl3aVpYaDBJam9pTG5CdVp5SXNJbk4yWjFWeWJDSTZJbWgwZEhCek9sd3ZYQzl6TG5jdWIzSm5YQzlwYldGblpYTmNMMk52Y21WY0wyVnRiMnBwWEM4eUxqUmNMM04yWjF3dklpd2ljM1puUlhoMElqb2lMbk4yWnlJc0luTnZkWEpqWlNJNmV5SmpiMjVqWVhSbGJXOXFhU0k2SW1oMGRIQnpPbHd2WEM5M2QzY3VjRzVuY0dsNExtTnZiVnd2ZDNBdGFXNWpiSFZrWlhOY0wycHpYQzkzY0MxbGJXOXFhUzF5Wld4bFlYTmxMbTFwYmk1cWN6OTJaWEk5TkM0NUxqUWlmWDA3SVdaMWJtTjBhVzl1S0dFc1lpeGpLWHRtZFc1amRHbHZiaUJrS0dFc1lpbDdkbUZ5SUdNOVUzUnlhVzVuTG1aeWIyMURhR0Z5UTI5a1pUdHNMbU5zWldGeVVtVmpkQ2d3TERBc2F5NTNhV1IwYUN4ckxtaGxhV2RvZENrc2JDNW1hV3hzVkdWNGRDaGpMbUZ3Y0d4NUtIUm9hWE1zWVNrc01Dd3dLVHQyWVhJZ1pEMXJMblJ2UkdGMFlWVlNUQ2dwTzJ3dVkyeGxZWEpTWldOMEtEQXNNQ3hyTG5kcFpIUm9MR3N1YUdWcFoyaDBLU3hzTG1acGJHeFVaWGgwS0dNdVlYQndiSGtvZEdocGN5eGlLU3d3TERBcE8zWmhjaUJsUFdzdWRHOUVZWFJoVlZKTUtDazdjbVYwZFhKdUlHUTlQVDFsZldaMWJtTjBhVzl1SUdVb1lTbDdkbUZ5SUdJN2FXWW9JV3g4ZkNGc0xtWnBiR3hVWlhoMEtYSmxkSFZ5YmlFeE8zTjNhWFJqYUNoc0xuUmxlSFJDWVhObGJHbHVaVDBpZEc5d0lpeHNMbVp2Ym5ROUlqWXdNQ0F6TW5CNElFRnlhV0ZzSWl4aEtYdGpZWE5sSW1ac1lXY2lPbkpsZEhWeWJpRW9ZajFrS0ZzMU5UTTFOaXcxTmpneU5pdzFOVE0xTml3MU5qZ3hPVjBzV3pVMU16VTJMRFUyT0RJMkxEZ3lNRE1zTlRVek5UWXNOVFk0TVRsZEtTa21KaWhpUFdRb1d6VTFNelUyTERVM016TXlMRFUyTVRJNExEVTJOREl6TERVMk1USTRMRFUyTkRFNExEVTJNVEk0TERVMk5ESXhMRFUyTVRJNExEVTJORE13TERVMk1USTRMRFUyTkRJekxEVTJNVEk0TERVMk5EUTNYU3hiTlRVek5UWXNOVGN6TXpJc09ESXdNeXcxTmpFeU9DdzFOalF5TXl3NE1qQXpMRFUyTVRJNExEVTJOREU0TERneU1ETXNOVFl4TWpnc05UWTBNakVzT0RJd015dzFOakV5T0N3MU5qUXpNQ3c0TWpBekxEVTJNVEk0TERVMk5ESXpMRGd5TURNc05UWXhNamdzTlRZME5EZGRLU3doWWlrN1kyRnpaU0psYlc5cWFTSTZjbVYwZFhKdUlHSTlaQ2hiTlRVek5UY3NOVFkyT1RJc09ESXdOU3c1TnpreUxEWTFNRE01WFN4Yk5UVXpOVGNzTlRZMk9USXNPREl3TXl3NU56a3lMRFkxTURNNVhTa3NJV0o5Y21WMGRYSnVJVEY5Wm5WdVkzUnBiMjRnWmloaEtYdDJZWElnWXoxaUxtTnlaV0YwWlVWc1pXMWxiblFvSW5OamNtbHdkQ0lwTzJNdWMzSmpQV0VzWXk1a1pXWmxjajFqTG5SNWNHVTlJblJsZUhRdmFtRjJZWE5qY21sd2RDSXNZaTVuWlhSRmJHVnRaVzUwYzBKNVZHRm5UbUZ0WlNnaWFHVmhaQ0lwV3pCZExtRndjR1Z1WkVOb2FXeGtLR01wZlhaaGNpQm5MR2dzYVN4cUxHczlZaTVqY21WaGRHVkZiR1Z0Wlc1MEtDSmpZVzUyWVhNaUtTeHNQV3N1WjJWMFEyOXVkR1Y0ZENZbWF5NW5aWFJEYjI1MFpYaDBLQ0l5WkNJcE8yWnZjaWhxUFVGeWNtRjVLQ0ptYkdGbklpd2laVzF2YW1raUtTeGpMbk4xY0hCdmNuUnpQWHRsZG1WeWVYUm9hVzVuT2lFd0xHVjJaWEo1ZEdocGJtZEZlR05sY0hSR2JHRm5PaUV3ZlN4cFBUQTdhVHhxTG14bGJtZDBhRHRwS3lzcFl5NXpkWEJ3YjNKMGMxdHFXMmxkWFQxbEtHcGJhVjBwTEdNdWMzVndjRzl5ZEhNdVpYWmxjbmwwYUdsdVp6MWpMbk4xY0hCdmNuUnpMbVYyWlhKNWRHaHBibWNtSm1NdWMzVndjRzl5ZEhOYmFsdHBYVjBzSW1ac1lXY2lJVDA5YWx0cFhTWW1LR011YzNWd2NHOXlkSE11WlhabGNubDBhR2x1WjBWNFkyVndkRVpzWVdjOVl5NXpkWEJ3YjNKMGN5NWxkbVZ5ZVhSb2FXNW5SWGhqWlhCMFJteGhaeVltWXk1emRYQndiM0owYzF0cVcybGRYU2s3WXk1emRYQndiM0owY3k1bGRtVnllWFJvYVc1blJYaGpaWEIwUm14aFp6MWpMbk4xY0hCdmNuUnpMbVYyWlhKNWRHaHBibWRGZUdObGNIUkdiR0ZuSmlZaFl5NXpkWEJ3YjNKMGN5NW1iR0ZuTEdNdVJFOU5VbVZoWkhrOUlURXNZeTV5WldGa2VVTmhiR3hpWVdOclBXWjFibU4wYVc5dUtDbDdZeTVFVDAxU1pXRmtlVDBoTUgwc1l5NXpkWEJ3YjNKMGN5NWxkbVZ5ZVhSb2FXNW5mSHdvYUQxbWRXNWpkR2x2YmlncGUyTXVjbVZoWkhsRFlXeHNZbUZqYXlncGZTeGlMbUZrWkVWMlpXNTBUR2x6ZEdWdVpYSS9LR0l1WVdSa1JYWmxiblJNYVhOMFpXNWxjaWdpUkU5TlEyOXVkR1Z1ZEV4dllXUmxaQ0lzYUN3aE1Ta3NZUzVoWkdSRmRtVnVkRXhwYzNSbGJtVnlLQ0pzYjJGa0lpeG9MQ0V4S1NrNktHRXVZWFIwWVdOb1JYWmxiblFvSW05dWJHOWhaQ0lzYUNrc1lpNWhkSFJoWTJoRmRtVnVkQ2dpYjI1eVpXRmtlWE4wWVhSbFkyaGhibWRsSWl4bWRXNWpkR2x2YmlncGV5SmpiMjF3YkdWMFpTSTlQVDFpTG5KbFlXUjVVM1JoZEdVbUptTXVjbVZoWkhsRFlXeHNZbUZqYXlncGZTa3BMR2M5WXk1emIzVnlZMlY4Zkh0OUxHY3VZMjl1WTJGMFpXMXZhbWsvWmlobkxtTnZibU5oZEdWdGIycHBLVHBuTG5kd1pXMXZhbWttSm1jdWRIZGxiVzlxYVNZbUtHWW9aeTUwZDJWdGIycHBLU3htS0djdWQzQmxiVzlxYVNrcEtYMG9kMmx1Wkc5M0xHUnZZM1Z0Wlc1MExIZHBibVJ2ZHk1ZmQzQmxiVzlxYVZObGRIUnBibWR6S1RzOEwzTmpjbWx3ZEQ0Z1BITjBlV3hsSUhSNWNHVTlJblJsZUhRdlkzTnpJajVwYldjdWQzQXRjMjFwYkdWNUxHbHRaeTVsYlc5cWFYdGthWE53YkdGNU9tbHViR2x1WlNBaGFXMXdiM0owWVc1ME8ySnZjbVJsY2pwdWIyNWxJQ0ZwYlhCdmNuUmhiblE3WW05NExYTm9ZV1J2ZHpwdWIyNWxJQ0ZwYlhCdmNuUmhiblE3YUdWcFoyaDBPakZsYlNBaGFXMXdiM0owWVc1ME8zZHBaSFJvT2pGbGJTQWhhVzF3YjNKMFlXNTBPMjFoY21kcGJqb3dDaTR3TjJWdElDRnBiWEJ2Y25SaGJuUTdkbVZ5ZEdsallXd3RZV3hwWjI0NkxUQXVNV1Z0SUNGcGJYQnZjblJoYm5RN1ltRmphMmR5YjNWdVpEcHViMjVsSUNGcGJYQnZjblJoYm5RN2NHRmtaR2x1Wnpvd0NpRnBiWEJ2Y25SaGJuUjlQQzl6ZEhsc1pUNDhiR2x1YXdweVpXdzlKM04wZVd4bGMyaGxaWFFuSUdsa1BTZGhiblJvWlcxbGMxOXphRzl5ZEdOdlpHVmZjM1I1YkdWekxXTnpjeWNnSUdoeVpXWTlKMmgwZEhCek9pOHZkM2QzTG5CdVozQnBlQzVqYjIwdmQzQXRZMjl1ZEdWdWRDOXdiSFZuYVc1ekwyRnVkR2hsYldWekxYTm9iM0owWTI5a1pYTXZhVzVqYkhWa1pYTXZZM056TDJGdWRHaGxiV1Z6TFhOb2IzSjBZMjlrWlhNdVkzTnpQM1psY2owMExqa3VOQ2NnZEhsd1pUMG5kR1Y0ZEM5amMzTW5JRzFsWkdsaFBTZGhiR3duSUM4K1BHeHBibXNLY21Wc1BTZHpkSGxzWlhOb1pXVjBKeUJwWkQwbllYSmxkbWxqYjE5elkzTm1ZbU56Y3kxamMzTW5JQ0JvY21WbVBTZG9kSFJ3Y3pvdkwzZDNkeTV3Ym1kd2FYZ3VZMjl0TDNkd0xXTnZiblJsYm5RdmNHeDFaMmx1Y3k5bVlXTmxZbTl2YXkxd1lXZGxMWEJ5YjIxdmRHVnlMV3hwWjJoMFltOTRMMmx1WTJ4MVpHVnpMMlpsWVhSb1pYSnNhV2RvZEM5bVpXRjBhR1Z5YkdsbmFIUXViV2x1TG1OemN6OTJaWEk5TkM0NUxqUW5JSFI1Y0dVOUozUmxlSFF2WTNOekp5QnRaV1JwWVQwbllXeHNKeUF2UGp4c2FXNXJDbkpsYkQwbmMzUjViR1Z6YUdWbGRDY2dhV1E5SjNkd0xYQmhaMlZ1WVhacExXTnpjeWNnSUdoeVpXWTlKMmgwZEhCek9pOHZkM2QzTG5CdVozQnBlQzVqYjIwdmQzQXRZMjl1ZEdWdWRDOXdiSFZuYVc1ekwzZHdMWEJoWjJWdVlYWnBMM0JoWjJWdVlYWnBMV056Y3k1amMzTS9kbVZ5UFRJdU56QW5JSFI1Y0dVOUozUmxlSFF2WTNOekp5QnRaV1JwWVQwbllXeHNKeUF2UGp4c2FXNXJDbkpsYkQwbmMzUjViR1Z6YUdWbGRDY2dhV1E5SjNOMGVXeGxMV056Y3ljZ0lHaHlaV1k5SjJoMGRIQnpPaTh2ZDNkM0xuQnVaM0JwZUM1amIyMHZkM0F0WTI5dWRHVnVkQzkwYUdWdFpYTXZjRzVuY0dsNEwzTjBlV3hsTG1OemN6OTJaWEk5TVM0d0p5QjBlWEJsUFNkMFpYaDBMMk56Y3ljZ2JXVmthV0U5SjJGc2JDY2dMejQ4YkdsdWF3cHlaV3c5SjNOMGVXeGxjMmhsWlhRbklHbGtQU2RrWldaaGRXeDBMV056Y3ljZ0lHaHlaV1k5SjJoMGRIQnpPaTh2ZDNkM0xuQnVaM0JwZUM1amIyMHZkM0F0WTI5dWRHVnVkQzkwYUdWdFpYTXZjRzVuY0dsNEwyTnpjeTlqYjJ4dmNuTXZaR1ZtWVhWc2RDNWpjM00vZG1WeVBUUXVPUzQwSnlCMGVYQmxQU2QwWlhoMEwyTnpjeWNnYldWa2FXRTlKMkZzYkNjZ0x6NDhiR2x1YXdweVpXdzlKM04wZVd4bGMyaGxaWFFuSUdsa1BTZHZkMnd0WTJGeWIzVnpaV3d0WTNOekxXTnpjeWNnSUdoeVpXWTlKMmgwZEhCek9pOHZkM2QzTG5CdVozQnBlQzVqYjIwdmQzQXRZMjl1ZEdWdWRDOTBhR1Z0WlhNdmNHNW5jR2w0TDI5M2JDMWpZWEp2ZFhObGJDOXZkMnd1WTJGeWIzVnpaV3d1WTNOelAzWmxjajAwTGprdU5DY2dkSGx3WlQwbmRHVjRkQzlqYzNNbklHMWxaR2xoUFNkaGJHd25JQzgrUEd4cGJtc0tjbVZzUFNkemRIbHNaWE5vWldWMEp5QnBaRDBuY21WemNHOXVjMmwyWlMxamMzTW5JQ0JvY21WbVBTZG9kSFJ3Y3pvdkwzZDNkeTV3Ym1kd2FYZ3VZMjl0TDNkd0xXTnZiblJsYm5RdmRHaGxiV1Z6TDNCdVozQnBlQzlqYzNNdmNtVnpjRzl1YzJsMlpTNWpjM00vZG1WeVBURXVNQ2NnZEhsd1pUMG5kR1Y0ZEM5amMzTW5JRzFsWkdsaFBTZGhiR3duSUM4K1BHeHBibXNLY21Wc1BTZHpkSGxzWlhOb1pXVjBKeUJwWkQwbloyOXZaMnhsTFdadmJuUXRZM056SnlBZ2FISmxaajBuTHk5bWIyNTBjeTVuYjI5bmJHVmhjR2x6TG1OdmJTOWpjM00vWm1GdGFXeDVQVkoxWkdFbE0wRTBNREFsTWtNM01EQW1JekF6T0R0MlpYSTlOQzQ1TGpRbklIUjVjR1U5SjNSbGVIUXZZM056SnlCdFpXUnBZVDBuWVd4c0p5QXZQanhzYVc1ckNuSmxiRDBuYzNSNWJHVnphR1ZsZENjZ2FXUTlKMlp2Ym5RdFlYZGxjMjl0WlMxamMzTW5JQ0JvY21WbVBTZG9kSFJ3Y3pvdkwzZDNkeTV3Ym1kd2FYZ3VZMjl0TDNkd0xXTnZiblJsYm5RdmRHaGxiV1Z6TDNCdVozQnBlQzlqYzNNdlptOXVkQzFoZDJWemIyMWxMVFF1TlM0d0wyTnpjeTltYjI1MExXRjNaWE52YldVdWJXbHVMbU56Y3o5MlpYSTlOQzQ1TGpRbklIUjVjR1U5SjNSbGVIUXZZM056SnlCdFpXUnBZVDBuWVd4c0p5QXZQaUE4YzJOeWFYQjBJSFI1Y0dVOUozUmxlSFF2YW1GMllYTmpjbWx3ZENjZ2MzSmpQU2RvZEhSd2N6b3ZMM2QzZHk1d2JtZHdhWGd1WTI5dEwzZHdMV2x1WTJ4MVpHVnpMMnB6TDJweGRXVnllUzlxY1hWbGNua3Vhbk0vZG1WeVBURXVNVEl1TkNjK1BDOXpZM0pwY0hRK0lEeHpZM0pwY0hRZ2RIbHdaVDBuZEdWNGRDOXFZWFpoYzJOeWFYQjBKeUJ6Y21NOUoyaDBkSEJ6T2k4dmQzZDNMbkJ1WjNCcGVDNWpiMjB2ZDNBdGFXNWpiSFZrWlhNdmFuTXZhbkYxWlhKNUwycHhkV1Z5ZVMxdGFXZHlZWFJsTG0xcGJpNXFjejkyWlhJOU1TNDBMakVuUGp3dmMyTnlhWEIwUGlBOGMyTnlhWEIwSUhSNWNHVTlKM1JsZUhRdmFtRjJZWE5qY21sd2RDY2djM0pqUFNkb2RIUndjem92TDNkM2R5NXdibWR3YVhndVkyOXRMM2R3TFdOdmJuUmxiblF2Y0d4MVoybHVjeTltWVdObFltOXZheTF3WVdkbExYQnliMjF2ZEdWeUxXeHBaMmgwWW05NEwybHVZMngxWkdWekwyWmxZWFJvWlhKc2FXZG9kQzltWldGMGFHVnliR2xuYUhRdWJXbHVMbXB6UDNabGNqMDBMamt1TkNjK1BDOXpZM0pwY0hRK0lEeHpZM0pwY0hRZ2RIbHdaVDBuZEdWNGRDOXFZWFpoYzJOeWFYQjBKejUyWVhJZ2JHSmZiRjl5WlhROWV5SjNhV1IwYUNJNklqUXdNQ0lzSW1obGFXZG9kQ0k2SWpJMU5TSXNJbVJsYkdGNUlqb2lNVEF3TURBaUxDSmpiMk1pT2lJeElpd2labUpmYVdRaU9pSndibWR3YVhnaUxDSmpiMjlqSWpvaU1DSXNJbVJwYzNCc1lYbGZiMjVmWVd4c0lqb2lNU0lzSW5Ob2IzZGZiMjVqWlNJNklqRWlMQ0p0YVc0aU9pSXdJaXdpY0dWeVptOXliV0Z1WTJVaU9pSXdJbjA3UEM5elkzSnBjSFErSUR4elkzSnBjSFFnZEhsd1pUMG5kR1Y0ZEM5cVlYWmhjMk55YVhCMEp5QnpjbU05SjJoMGRIQnpPaTh2ZDNkM0xuQnVaM0JwZUM1amIyMHZkM0F0WTI5dWRHVnVkQzl3YkhWbmFXNXpMMlpoWTJWaWIyOXJMWEJoWjJVdGNISnZiVzkwWlhJdGJHbG5hSFJpYjNndmFXNWpiSFZrWlhNdmJHRjFibU5vTDJ4aGRXNWphQzV0YVc0dWFuTS9kbVZ5UFRRdU9TNDBKejQ4TDNOamNtbHdkRDRnUEd4cGJtc0tjbVZzUFNkb2RIUndjem92TDJGd2FTNTNMbTl5Wnk4bklHaHlaV1k5SjJoMGRIQnpPaTh2ZDNkM0xuQnVaM0JwZUM1amIyMHZkM0F0YW5OdmJpOG5JQzgrUEd4cGJtc0tjbVZzUFNKRlpHbDBWVkpKSWlCMGVYQmxQU0poY0hCc2FXTmhkR2x2Ymk5eWMyUXJlRzFzSWlCMGFYUnNaVDBpVWxORUlpQm9jbVZtUFNKb2RIUndjem92TDNkM2R5NXdibWR3YVhndVkyOXRMM2h0YkhKd1l5NXdhSEEvY25Oa0lpQXZQanhzYVc1ckNuSmxiRDBpZDJ4M2JXRnVhV1psYzNRaUlIUjVjR1U5SW1Gd2NHeHBZMkYwYVc5dUwzZHNkMjFoYm1sbVpYTjBLM2h0YkNJZ2FISmxaajBpYUhSMGNITTZMeTkzZDNjdWNHNW5jR2w0TG1OdmJTOTNjQzFwYm1Oc2RXUmxjeTkzYkhkdFlXNXBabVZ6ZEM1NGJXd2lJQzgrUEcxbGRHRUtibUZ0WlQwaVoyVnVaWEpoZEc5eUlpQmpiMjUwWlc1MFBTSlhiM0prVUhKbGMzTWdOQzQ1TGpRaUlDOCtJRHh6WTNKcGNIUWdkSGx3WlQwaWRHVjRkQzlxWVhaaGMyTnlhWEIwSWo1M2FXNWtiM2N1WDNObFgzQnNkV2RwYmw5MlpYSnphVzl1UFNjNExqRXVPU2M3UEM5elkzSnBjSFErSUR3dmFHVmhaRDQ4WW05a2VRcGpiR0Z6Y3owaVpYSnliM0kwTURRaVBqeG9aV0ZrWlhJK1BHUnBkZ3BqYkdGemN6MGliV0ZwYmkxb1pXRmtaWElpUGp4a2FYWUtZMnhoYzNNOUluTjBhV05yZVMxdmJpSStQR0VLYUhKbFpqMGlhSFIwY0hNNkx5OTNkM2N1Y0c1bmNHbDRMbU52YlM4aVBqeHBiV2NLWTJ4aGMzTTlJbXh2WjI4aUlITnlZejBpYUhSMGNEb3ZMM2QzZHk1d2JtZHdhWGd1WTI5dEwzZHdMV052Ym5SbGJuUXZkWEJzYjJGa2N5OHlNREUyTHpBMkwyeHZaMjh1Y0c1bklpQmhiSFE5SWxCdVoxQnBlQ0lnTHo0OEwyRStQRzVoZGdwcFpEMGliWGxxY1hWbGNubHRaVzUxSWlCamJHRnpjejBpYW5GMVpYSjVZM056YldWdWRTSStDand2Ym1GMlBqeGthWFlLWTJ4aGMzTTlJblZ3Ykc5aFpHSjBiaUkrQ2p4aENtaHlaV1k5SWlNaUlHTnNZWE56UFNKemFXMXdiR1ZpZEc0aVBqeHBDbU5zWVhOelBTSm1ZU0JtWVMxamJHOTFaQzExY0d4dllXUWlQand2YVQ0Z1BITndZVzQrVTNWaWJXbDBQQzl6Y0dGdVBqd3ZZVDQ4TDJScGRqNDhaR2wyQ21Oc1lYTnpQU0pqZFhOMGIyMHRaSEp2Y0dSdmQyNGdZM1Z6ZEc5dExXUnliM0JrYjNkdUxTMTNhR2wwWlNJK1BHWnZjbTBLWVdOMGFXOXVQU0pvZEhSd2N6b3ZMM2QzZHk1d2JtZHdhWGd1WTI5dEx5SWdiV1YwYUc5a1BTSm5aWFFpUGdvOGMyVnNaV04wQ201aGJXVTlKMk5oZENjZ2FXUTlKMk5oZENjZ1kyeGhjM005SjNCdmMzUm1iM0p0SnlBZ2IyNWphR0Z1WjJVOUozSmxkSFZ5YmlCMGFHbHpMbVp2Y20wdWMzVmliV2wwS0NrblBqeHZjSFJwYjI0S2RtRnNkV1U5SnpBbklITmxiR1ZqZEdWa1BTZHpaV3hsWTNSbFpDYytRbkp2ZDNObElFTmhkR1ZuYjNKcFpYTThMMjl3ZEdsdmJqNDhiM0IwYVc5dUNtTnNZWE56UFNKc1pYWmxiQzB3SWlCMllXeDFaVDBpTWpBd055SStRMnhwY0dGeWRITW1ibUp6Y0RzbWJtSnpjRHNvTkRnNEtUd3ZiM0IwYVc5dVBqeHZjSFJwYjI0S1kyeGhjM005SW14bGRtVnNMVEFpSUhaaGJIVmxQU0l5TlRVeklqNURaV3hsWW5KcGRIa21ibUp6Y0RzbWJtSnpjRHNvTWprNUtUd3ZiM0IwYVc5dVBqeHZjSFJwYjI0S1kyeGhjM005SW14bGRtVnNMVEFpSUhaaGJIVmxQU0l4TkRJaVBsWmxaMlYwWVdKc1pYTW1ibUp6Y0RzbWJtSnpjRHNvTXpReEtUd3ZiM0IwYVc5dVBqeHZjSFJwYjI0S1kyeGhjM005SW14bGRtVnNMVEFpSUhaaGJIVmxQU0l4TkRVaVBrWnlkV2wwY3ladVluTndPeVp1WW5Od095Z3pPVE1wUEM5dmNIUnBiMjQrUEc5d2RHbHZiZ3BqYkdGemN6MGliR1YyWld3dE1DSWdkbUZzZFdVOUlqRTBOQ0krUVc1cGJXRnNjeVp1WW5Od095WnVZbk53T3lneE9UY3BQQzl2Y0hScGIyNCtQRzl3ZEdsdmJncGpiR0Z6Y3owaWJHVjJaV3d0TUNJZ2RtRnNkV1U5SWpFMU5TSStRbWx5WkhNbWJtSnpjRHNtYm1KemNEc29OVFlwUEM5dmNIUnBiMjQrUEc5d2RHbHZiZ3BqYkdGemN6MGliR1YyWld3dE1DSWdkbUZzZFdVOUlqRTBPQ0krUm14dmQyVnljeVp1WW5Od095WnVZbk53T3lnMU5pazhMMjl3ZEdsdmJqNDhiM0IwYVc5dUNtTnNZWE56UFNKc1pYWmxiQzB3SWlCMllXeDFaVDBpTVRReklqNURZWEp6Sm01aWMzQTdKbTVpYzNBN0tEZ3hNU2s4TDI5d2RHbHZiajQ4YjNCMGFXOXVDbU5zWVhOelBTSnNaWFpsYkMwd0lpQjJZV3gxWlQwaU1UVTNJajVXWldocFkyeGxjeVp1WW5Od095WnVZbk53T3lnek1qRXBQQzl2Y0hScGIyNCtQRzl3ZEdsdmJncGpiR0Z6Y3owaWJHVjJaV3d0TUNJZ2RtRnNkV1U5SWpFMU5pSStSV3hsWTNSeWIyNXBZM01tYm1KemNEc21ibUp6Y0Rzb016QTVLVHd2YjNCMGFXOXVQanh2Y0hScGIyNEtZMnhoYzNNOUlteGxkbVZzTFRBaUlIWmhiSFZsUFNJeE5EWWlQa1p2YjJRbWJtSnpjRHNtYm1KemNEc29NemN6S1R3dmIzQjBhVzl1UGp4dmNIUnBiMjRLWTJ4aGMzTTlJbXhsZG1Wc0xUQWlJSFpoYkhWbFBTSXhOVEVpUGxCbGIzQnNaU1p1WW5Od095WnVZbk53T3lnek1UVXBQQzl2Y0hScGIyNCtQRzl3ZEdsdmJncGpiR0Z6Y3owaWJHVjJaV3d0TUNJZ2RtRnNkV1U5SWpFME9TSStSbUZ6YUdsdmJpWnVZbk53T3ladVluTndPeWd4TVRNcFBDOXZjSFJwYjI0K1BHOXdkR2x2YmdwamJHRnpjejBpYkdWMlpXd3RNQ0lnZG1Gc2RXVTlJakUxTWlJK1JuVnlibWwwZFhKbEptNWljM0E3Sm01aWMzQTdLREkyS1R3dmIzQjBhVzl1UGp4dmNIUnBiMjRLWTJ4aGMzTTlJbXhsZG1Wc0xUQWlJSFpoYkhWbFBTSXhOVFFpUGtsdWMyVmpkSE1tYm1KemNEc21ibUp6Y0Rzb05ESXBQQzl2Y0hScGIyNCtQRzl3ZEdsdmJncGpiR0Z6Y3owaWJHVjJaV3d0TUNJZ2RtRnNkV1U5SWpFME55SStUbUYwZFhKbEptNWljM0E3Sm01aWMzQTdLREUzTXlrOEwyOXdkR2x2Ymo0OGIzQjBhVzl1Q21Oc1lYTnpQU0pzWlhabGJDMHdJaUIyWVd4MVpUMGlNVFV6SWo1VGNHOXlkSE1tYm1KemNEc21ibUp6Y0Rzb01UUTRLVHd2YjNCMGFXOXVQanh2Y0hScGIyNEtZMnhoYzNNOUlteGxkbVZzTFRBaUlIWmhiSFZsUFNJeE5UQWlQazlpYW1WamRITW1ibUp6Y0RzbWJtSnpjRHNvTVN3eE1EY3BQQzl2Y0hScGIyNCtQRzl3ZEdsdmJncGpiR0Z6Y3owaWJHVjJaV3d0TUNJZ2RtRnNkV1U5SWpFMU9TSStWMlZoY0c5dWN5WnVZbk53T3ladVluTndPeWd4TWpjcFBDOXZjSFJwYjI0K1BHOXdkR2x2YmdwamJHRnpjejBpYkdWMlpXd3RNQ0lnZG1Gc2RXVTlJakUxT0NJK1ZHOXZiSE1tYm1KemNEc21ibUp6Y0Rzb01UQXdLVHd2YjNCMGFXOXVQanh2Y0hScGIyNEtZMnhoYzNNOUlteGxkbVZzTFRBaUlIWmhiSFZsUFNJeE1UZzFJajVNYjJkdmN5WnVZbk53T3ladVluTndPeWd6T0RFcFBDOXZjSFJwYjI0K1BHOXdkR2x2YmdwamJHRnpjejBpYkdWMlpXd3RNQ0lnZG1Gc2RXVTlJams0SWo1UGRHaGxjbk1tYm1KemNEc21ibUp6Y0Rzb05UUXBQQzl2Y0hScGIyNCtDand2YzJWc1pXTjBQZ284Ym05elkzSnBjSFErUEdScGRqNDhhVzV3ZFhRS2RIbHdaVDBpYzNWaWJXbDBJaUIyWVd4MVpUMGlWbWxsZHlJZ0x6NDhMMlJwZGo0OEwyNXZjMk55YVhCMFBqd3ZabTl5YlQ0OEwyUnBkajQ4Wm05eWJRcHBaRDBpYzJWaGNtTm9abTl5YlRJaUlHTnNZWE56UFNKb1pXRmtaWEl0YzJWaGNtTm9JaUJ0WlhSb2IyUTlJbWRsZENJZ1lXTjBhVzl1UFNKb2RIUndjem92TDNkM2R5NXdibWR3YVhndVkyOXRMeUkrUEdsdWNIVjBDbkJzWVdObGFHOXNaR1Z5UFNKVFpXRnlZMmdnVUU1SElDNHVMaUlnZEhsd1pUMGlkR1Y0ZENJZ2JtRnRaVDBpY3lJZ2FXUTlJbk1pSUM4K1BHbHVjSFYwQ25SNWNHVTlJbk4xWW0xcGRDSWdkbUZzZFdVOUlsTmxZWEpqYUNJZ1kyeGhjM005SW1KMWRIUnZibWxqYjI0aUlDOCtQQzltYjNKdFBqeGthWFlLWTJ4aGMzTTlJbU5zWldGeUlqNDhMMlJwZGo0OEwyUnBkajQ4WkdsMkNtTnNZWE56UFNKamJHVmhjaUkrUEM5a2FYWStQQzlrYVhZK1BDOW9aV0ZrWlhJK1BHUnBkZ3BqYkdGemN6MGlZMnhsWVhJaVBqd3ZaR2wyUGp4a2FYWUtZMnhoYzNNOUluTjFZaTFvWldGa1pYSWlQanhrYVhZS1kyeGhjM005SW5keVlYQXRiV2xrWkd4bElqNDhabTl5YlFwcFpEMGljMlZoY21Ob1ptOXliVElpSUdOc1lYTnpQU0pvWldGa1pYSXRjMlZoY21Ob0lpQnRaWFJvYjJROUltZGxkQ0lnWVdOMGFXOXVQU0pvZEhSd2N6b3ZMM2QzZHk1d2JtZHdhWGd1WTI5dEx5SStQR2x1Y0hWMENuQnNZV05sYUc5c1pHVnlQU0pUWldGeVkyZ2dVRTVISUM0dUxpSWdkSGx3WlQwaWRHVjRkQ0lnYm1GdFpUMGljeUlnYVdROUluTWlJQzgrUEdsdWNIVjBDblI1Y0dVOUluTjFZbTFwZENJZ2RtRnNkV1U5SWxObFlYSmphQ0lnWTJ4aGMzTTlJbUoxZEhSdmJtbGpiMjRpSUM4K1BDOW1iM0p0UGp4a2FYWUtZMnhoYzNNOUltTnNaV0Z5SWo0OEwyUnBkajQ4TDJScGRqNDhMMlJwZGo0OFpHbDJDbU5zWVhOelBTSm9iMjFsTFdaMWJHeDNhV1IwYUNJK1BHUnBkZ3BqYkdGemN6MGlkM0poY0MxamIyNTBaVzUwSWo0OFpHbDJDbU5zWVhOelBTSmhjbU5vYVhabExXaGxZV1JsY2lJK1BHZ3pQa1Z5Y205eUlEUXdOQ0F0SUU1dmRDQkdiM1Z1WkNBOFluSUtMejRnVTI5eWNua3NJR0oxZENCNWIzVWdZWEpsSUd4dmIydHBibWNnWm05eUlITnZiV1YwYUdsdVp5QjBhR0YwSUdsemJpWWpNRE01TzNRZ2FHVnlaUzQ4TDJnelBqd3ZaR2wyUGp4MWJBcHBaRDBpYVc1bWFXNXBkR1V0WVhKMGFXTnNaWE1pSUdOc1lYTnpQU0puY21sa1gyeHBjM1FnYW5NdGJXRnpiMjV5ZVNJZ1pHRjBZUzF0WVhOdmJuSjVMVzl3ZEdsdmJuTTlKM3NnSW1OdmJIVnRibGRwWkhSb0lqb2dNQ0I5Sno0OEwzVnNQanhrYVhZS1kyeGhjM005SW1Oc1pXRnlJajQ4TDJScGRqNDhMMlJwZGo0OFpHbDJDbU5zWVhOelBTSmpiR1ZoY2lJK1BDOWthWFkrUEM5a2FYWStQR1p2YjNSbGNqNDhaR2wyQ21Oc1lYTnpQU0p6YjJOcFlXd3RjMlZqZEdsdmJpSStQSFZzQ21Oc1lYTnpQU0ptYjI5MFpYSXRjMjlqYVdGc0lqNDhiR2srUEdFS2FISmxaajBpYUhSMGNITTZMeTkzZDNjdVptRmpaV0p2YjJzdVkyOXRMM0J1WjNCcGVDSWdkR0Z5WjJWMFBTSmZZbXhoYm1zaVBqeHBDbU5zWVhOelBTSm1ZU0JtWVMxbVlXTmxZbTl2YXlJK1BDOXBQand2WVQ0OEwyeHBQanhzYVQ0OFlRcG9jbVZtUFNKb2RIUndjem92TDNSM2FYUjBaWEl1WTI5dEwzQnVaM0JwZUdOdmJTSWdkR0Z5WjJWMFBTSmZZbXhoYm1zaVBqeHBDbU5zWVhOelBTSm1ZU0JtWVMxMGQybDBkR1Z5SWo0OEwyaytDand2WVQ0OEwyeHBQanhzYVQ0OFlRcG9jbVZtUFNKb2RIUndjem92TDNkM2R5NXdhVzUwWlhKbGMzUXVZMjl0TDNCdVozQnBlR052YlM4aUlIUmhjbWRsZEQwaVgySnNZVzVySWo0OGFRcGpiR0Z6Y3owaVptRWdabUV0Y0dsdWRHVnlaWE4wSWo0OEwyaytQQzloUGp3dmJHaytQR3hwUGp4aENtaHlaV1k5SWlNaVBqeHBDbU5zWVhOelBTSm1ZU0JtWVMxbmIyOW5iR1V0Y0d4MWN5SStQQzlwUGp3dllUNDhMMnhwUGp4c2FUNDhZUXBvY21WbVBTSWpJajQ4YVFwamJHRnpjejBpWm1FZ1ptRXRlVzkxZEhWaVpTSStQQzlwUGp3dllUNDhMMnhwUGp3dmRXdytQQzlrYVhZK1BHUnBkZ3BqYkdGemN6MGlkM0poY0MxbWIyOTBaWElpUGp4a2FYWUtZMnhoYzNNOUltTnZjSGx5YVdkb2RDSStDa052Y0hseWFXZG9kQ0RDcVNBeU1ERTRJRkJ1WjFCcGVDQThZUXBvY21WbVBTSWpJajVCWW05MWREd3ZZVDRnZkNBOFlRcG9jbVZtUFNJaklqNU1hV05sYm5ObFBDOWhQaUI4SUR4aENtaHlaV1k5SWlNaVBsUmxjbTF6SUc5bUlGTmxjblpwWTJVOEwyRStJSHdnUEdFS2FISmxaajBpSXlJK1JFMURRU0JEYjNCNWNtbG5hSFFnVUc5c2FXTjVQQzloUGp3dlpHbDJQand2WkdsMlBqeHdDbWxrUFNKaVlXTnJMWFJ2Y0NJK1BHRUthSEpsWmowaUkzUnZjQ0krUEhOd1lXNCtQQzl6Y0dGdVBqd3ZZVDQ4TDNBK0Nqd3ZabTl2ZEdWeVBpQThjMk55YVhCMElIUjVjR1U5SW5SbGVIUXZhbUYyWVhOamNtbHdkQ0krZG1GeUlHcHhkV1Z5ZVdOemMyMWxiblU5ZTJaaFpHVnpaWFIwYVc1bmN6cDdiM1psY21SMWNtRjBhVzl1T2pBc2IzVjBaSFZ5WVhScGIyNDZNVEF3ZlN4aWRXbHNaRzFsYm5VNlpuVnVZM1JwYjI0b1lpeGhLWHRxVVhWbGNua29aRzlqZFcxbGJuUXBMbkpsWVdSNUtHWjFibU4wYVc5dUtHVXBlM1poY2lCalBXVW9JaU1pSzJJcklqNTFiQ0lwTzNaaGNpQmtQV011Wm1sdVpDZ2lkV3dpS1M1d1lYSmxiblFvS1R0a0xtVmhZMmdvWm5WdVkzUnBiMjRvWnlsN2RtRnlJR2c5WlNoMGFHbHpLVHQyWVhJZ1pqMWxLSFJvYVhNcExtWnBibVFvSW5Wc09tVnhLREFwSWlrN2RHaHBjeTVmWkdsdFpXNXphVzl1Y3oxN2R6cDBhR2x6TG05bVpuTmxkRmRwWkhSb0xHZzZkR2hwY3k1dlptWnpaWFJJWldsbmFIUXNjM1ZpZFd4M09tWXViM1YwWlhKWGFXUjBhQ2dwTEhOMVluVnNhRHBtTG05MWRHVnlTR1ZwWjJoMEtDbDlPM1JvYVhNdWFYTjBiM0JvWldGa1pYSTlhQzV3WVhKbGJuUnpLQ0oxYkNJcExteGxibWQwYUQwOU1UOTBjblZsT21aaGJITmxPMll1WTNOektIdDBiM0E2ZEdocGN5NXBjM1J2Y0dobFlXUmxjajkwYUdsekxsOWthVzFsYm5OcGIyNXpMbWdySW5CNElqb3dmU2s3YUM1amFHbHNaSEpsYmlnaVlUcGxjU2d3S1NJcExtTnpjeWgwYUdsekxtbHpkRzl3YUdWaFpHVnlQM3R3WVdSa2FXNW5VbWxuYUhRNllTNWtiM2R1V3pKZGZUcDdmU2t1WVhCd1pXNWtLQ2M4YVcxbklITnlZejBpSnlzb2RHaHBjeTVwYzNSdmNHaGxZV1JsY2o5aExtUnZkMjViTVYwNllTNXlhV2RvZEZzeFhTa3JKeUlnWTJ4aGMzTTlJaWNyS0hSb2FYTXVhWE4wYjNCb1pXRmtaWEkvWVM1a2IzZHVXekJkT21FdWNtbG5hSFJiTUYwcEt5Y2lJSE4wZVd4bFBTSmliM0prWlhJNk1Ec2lJQzgrSnlrN2FDNW9iM1psY2lobWRXNWpkR2x2YmlocUtYdDJZWElnYVQxbEtIUm9hWE1wTG1Ob2FXeGtjbVZ1S0NKMWJEcGxjU2d3S1NJcE8zUm9hWE11WDI5bVpuTmxkSE05ZTJ4bFpuUTZaU2gwYUdsektTNXZabVp6WlhRb0tTNXNaV1owTEhSdmNEcGxLSFJvYVhNcExtOW1abk5sZENncExuUnZjSDA3ZG1GeUlHczlkR2hwY3k1cGMzUnZjR2hsWVdSbGNqOHdPblJvYVhNdVgyUnBiV1Z1YzJsdmJuTXVkenRyUFNoMGFHbHpMbDl2Wm1aelpYUnpMbXhsWm5RcmF5dDBhR2x6TGw5a2FXMWxibk5wYjI1ekxuTjFZblZzZHo1bEtIZHBibVJ2ZHlrdWQybGtkR2dvS1NrL0tIUm9hWE11YVhOMGIzQm9aV0ZrWlhJL0xYUm9hWE11WDJScGJXVnVjMmx2Ym5NdWMzVmlkV3gzSzNSb2FYTXVYMlJwYldWdWMybHZibk11ZHpvdGRHaHBjeTVmWkdsdFpXNXphVzl1Y3k1M0tUcHJPMmt1WTNOektIdHNaV1owT21zckluQjRJbjBwTG1aaFpHVkpiaWhxY1hWbGNubGpjM050Wlc1MUxtWmhaR1Z6WlhSMGFXNW5jeTV2ZG1WeVpIVnlZWFJwYjI0cGZTeG1kVzVqZEdsdmJpaHBLWHRsS0hSb2FYTXBMbU5vYVd4a2NtVnVLQ0oxYkRwbGNTZ3dLU0lwTG1aaFpHVlBkWFFvYW5GMVpYSjVZM056YldWdWRTNW1ZV1JsYzJWMGRHbHVaM011YjNWMFpIVnlZWFJwYjI0cGZTbDlLVHRqTG1acGJtUW9JblZzSWlrdVkzTnpLSHRrYVhOd2JHRjVPaUp1YjI1bElpeDJhWE5wWW1sc2FYUjVPaUoyYVhOcFlteGxJbjBwZlNsOWZUdDJZWElnWVhKeWIzZHBiV0ZuWlhNOWUyUnZkMjQ2V3lka2IzZHVZWEp5YjNkamJHRnpjeWNzSjJoMGRIQnpPaTh2ZDNkM0xuQnVaM0JwZUM1amIyMHZkM0F0WTI5dWRHVnVkQzkwYUdWdFpYTXZjRzVuY0dsNEwybHRZV2RsY3k5dFpXNTFMMkZ5Y205M0xXUnZkMjR1Y0c1bkoxMHNjbWxuYUhRNld5ZHlhV2RvZEdGeWNtOTNZMnhoYzNNbkxDZG9kSFJ3Y3pvdkwzZDNkeTV3Ym1kd2FYZ3VZMjl0TDNkd0xXTnZiblJsYm5RdmRHaGxiV1Z6TDNCdVozQnBlQzlwYldGblpYTXZiV1Z1ZFM5aGNuSnZkeTF5YVdkb2RDNXdibWNuWFgwN2FuRjFaWEo1WTNOemJXVnVkUzVpZFdsc1pHMWxiblVvSW0xNWFuRjFaWEo1YldWdWRTSXNZWEp5YjNkcGJXRm5aWE1wTzJweGRXVnllV056YzIxbGJuVXVZblZwYkdSdFpXNTFLQ0p0ZVdweGRXVnllVzFsYm5VdFkyRjBJaXhoY25KdmQybHRZV2RsY3lrN1BDOXpZM0pwY0hRK0lEeHpZM0pwY0hRZ2RIbHdaVDBpZEdWNGRDOXFZWFpoYzJOeWFYQjBJajVxVVhWbGNua29aRzlqZFcxbGJuUXBMbkpsWVdSNUtHWjFibU4wYVc5dUtDUXBleVJyZDIxR2IzSmpaVVJ2ZDI1c2IyRmtQU1FvSW1KdlpIa2dZUzVyZDIwdFptOXlZMlV0Wkc5dWQyeHZZV1FpS1Rza2EzZHRSbTl5WTJWRWIzZHViRzloWkM1bFlXTm9LR1oxYm1OMGFXOXVLR2x1WkdWNEtYdDJZWElnYjJ4a1NISmxaajBrS0hSb2FYTXBMbVJoZEdFb0ltWnZjbU5sWkc5M2JteHZZV1FpS1Rza0tIUm9hWE1wTG5CeWIzQW9JbWh5WldZaUxDSm9kSFJ3Y3pvdkwzZDNkeTV3Ym1kd2FYZ3VZMjl0TDJSdmQyNXNiMkZrTHlJcmIyeGtTSEpsWmlrN2ZTazdmU2s3UEM5elkzSnBjSFErUEhOamNtbHdkQ0JzWVc1bmRXRm5aVDBpYW1GMllYTmpjbWx3ZENJZ2RIbHdaVDBpZEdWNGRDOXFZWFpoYzJOeWFYQjBJajUyWVhJZ2EzQm5YMk5sYkd3OUlrNGlPM1poY2lCcmNHZGZibkpqYVY5cGJXRm5aVDBpYUhSMGNEb3ZMM2QzZHk1d2JtZHdhWGd1WTI5dEwzZHdMV052Ym5SbGJuUXZjR3gxWjJsdWN5OXVieTF5YVdkb2RDMWpiR2xqYXkxcGJXRm5aWE10Y0d4MVoybHVMMjV2ZEM1bmFXWWlPM1poY2lCcmNHZGZibkpqYVY5bGVIUnlZVDBpVGlJN2RtRnlJR3R3WjE5dWNtTnBYMlJ5WVdjOUlsa2lPend2YzJOeWFYQjBQaUE4YzJOeWFYQjBJR3hoYm1kMVlXZGxQU0pxWVhaaGMyTnlhWEIwSWlCMGVYQmxQU0owWlhoMEwycGhkbUZ6WTNKcGNIUWlJSE55WXowaWFIUjBjRG92TDNkM2R5NXdibWR3YVhndVkyOXRMM2R3TFdOdmJuUmxiblF2Y0d4MVoybHVjeTl1YnkxeWFXZG9kQzFqYkdsamF5MXBiV0ZuWlhNdGNHeDFaMmx1TDI1dkxYSnBaMmgwTFdOc2FXTnJMV2x0WVdkbGN5NXFjeUkrUEM5elkzSnBjSFErSUR4elkzSnBjSFErYWxGMVpYSjVLR1J2WTNWdFpXNTBLUzV5WldGa2VTaG1kVzVqZEdsdmJpZ3BlMnBSZFdWeWVTNXdiM04wS0Nkb2RIUndjem92TDNkM2R5NXdibWR3YVhndVkyOXRQMmRoWDJGamRHbHZiajFuYjI5bmJHVmhibUZzZVhScFkzTmZaMlYwWDNOamNtbHdkQ2NzZTJGamRHbHZiam9uWjI5dloyeGxZVzVoYkhsMGFXTnpYMmRsZEY5elkzSnBjSFFuZlN4bWRXNWpkR2x2YmloeVpYTndiMjV6WlNsN2RtRnlJRVk5Ym1WM0lFWjFibU4wYVc5dUtISmxjM0J2Ym5ObEtUdHlaWFIxY200b1JpZ3BLVHQ5S1R0OUtUczhMM05qY21sd2RENDhaR2wyQ25OMGVXeGxQU0prYVhOd2JHRjVPbTV2Ym1VaVBqeGthWFlLYVdROUltRnlkbXhpWkdGMFlTSWdjM1I1YkdVOUltOTJaWEptYkc5M09uWnBjMmxpYkdVN2QybGtkR2c2TkRBd2NIZzdhR1ZwWjJoME9qSTFNSEI0T3lJK1BHUnBkZ3BoYkd4dmQzUnlZVzV6Y0dGeVpXNWplVDBpZEhKMVpTSWdjM1I1YkdVOUltOTJaWEptYkc5M09taHBaR1JsYmp0M2FXUjBhRG8wTURCd2VEdG9aV2xuYUhRNk1qVXdjSGc3SWlCamJHRnpjejBpWm1JdGNHRm5aU0lLWkdGMFlTMW9jbVZtUFNKb2RIUndjem92TDNkM2R5NW1ZV05sWW05dmF5NWpiMjB2Y0c1bmNHbDRJZ3BrWVhSaExYZHBaSFJvUFNJME1EQWlDbVJoZEdFdGFHVnBaMmgwUFNJeU5UQWlDbVJoZEdFdGMyMWhiR3d0YUdWaFpHVnlQU0ptWVd4elpTSUtaR0YwWVMxaFpHRndkQzFqYjI1MFlXbHVaWEl0ZDJsa2RHZzlJbVpoYkhObElncGtZWFJoTFdocFpHVXRZMjkyWlhJOUluUnlkV1VpQ21SaGRHRXRjMmh2ZHkxbVlXTmxjR2xzWlQwaWRISjFaU0lLWkdGMFlTMXphRzkzTFhCdmMzUnpQU0ptWVd4elpTSStQQzlrYVhZK1BDOWthWFkrUEM5a2FYWStJRHh6WTNKcGNIUWdkSGx3WlQwbmRHVjRkQzlxWVhaaGMyTnlhWEIwSnlCemNtTTlKMmgwZEhCek9pOHZkM2QzTG5CdVozQnBlQzVqYjIwdmQzQXRZMjl1ZEdWdWRDOTBhR1Z0WlhNdmNHNW5jR2w0TDI5M2JDMWpZWEp2ZFhObGJDOXZkMnd1WTJGeWIzVnpaV3d1YldsdUxtcHpQM1psY2owMExqa3VOQ2MrUEM5elkzSnBjSFErSUR4elkzSnBjSFFnZEhsd1pUMG5kR1Y0ZEM5cVlYWmhjMk55YVhCMEp5QnpjbU05SjJoMGRIQnpPaTh2ZDNkM0xuQnVaM0JwZUM1amIyMHZkM0F0WTI5dWRHVnVkQzkwYUdWdFpYTXZjRzVuY0dsNEwycHpMMnB4ZFdWeWVTNXRZV2x1TG1welAzWmxjajAwTGprdU5DYytQQzl6WTNKcGNIUStJRHh6WTNKcGNIUWdkSGx3WlQwbmRHVjRkQzlxWVhaaGMyTnlhWEIwSnlCemNtTTlKMmgwZEhCek9pOHZkM2QzTG5CdVozQnBlQzVqYjIwdmQzQXRZMjl1ZEdWdWRDOTBhR1Z0WlhNdmNHNW5jR2w0TDJwekwyTjFjM1J2YlM1cWN6OTJaWEk5TkM0NUxqUW5Qand2YzJOeWFYQjBQaUE4YzJOeWFYQjBJSFI1Y0dVOUozUmxlSFF2YW1GMllYTmpjbWx3ZENjZ2MzSmpQU2RvZEhSd2N6b3ZMM2QzZHk1d2JtZHdhWGd1WTI5dEwzZHdMV2x1WTJ4MVpHVnpMMnB6TDNkd0xXVnRZbVZrTG0xcGJpNXFjejkyWlhJOU5DNDVMalFuUGp3dmMyTnlhWEIwUGlBOEwySnZaSGsrUEM5b2RHMXNQZ284SVMwdENpb3FLaUJVYUdseklITnBkR1VnY25WdWN5QlhVQ0JUZFhCbGNpQk5hVzVwWm5rZ2NHeDFaMmx1SUhZeExqVXVNU0F0SUdoMGRIQTZMeTkzYjNKa2NISmxjM011YjNKbkwzQnNkV2RwYm5NdmQzQXRjM1Z3WlhJdGJXbHVhV1o1SUNvcUtnb3FLaW9nVkc5MFlXd2djMmw2WlNCellYWmxaRG9nTVRZdU1UZzBKU0I4SUZOcGVtVWdZbVZtYjNKbElHTnZiWEJ5WlhOemFXOXVPaUF5TURZNU9TQmllWFJsY3lCOElGTnBlbVVnWVdaMFpYSWdZMjl0Y0hKbGMzTnBiMjQ2SURFM016UTVJR0o1ZEdWekxpQXFLaW9LTFMwKyIsIm1lZGlhdHlwZSI6ImltYWdlL3BuZyJ9XSwiaW5zdGFsbCI6eyJzcGVjIjp7ImNsdXN0ZXJQZXJtaXNzaW9ucyI6W3sicnVsZXMiOlt7ImFwaUdyb3VwcyI6WyIiXSwicmVzb3VyY2VzIjpbInBlcnNpc3RlbnR2b2x1bWVjbGFpbXMiXSwidmVyYnMiOlsiZ2V0IiwibGlzdCIsInVwZGF0ZSIsIndhdGNoIl19LHsiYXBpR3JvdXBzIjpbIiJdLCJyZXNvdXJjZXMiOlsicGVyc2lzdGVudHZvbHVtZXMiXSwidmVyYnMiOlsiZ2V0IiwibGlzdCIsInBhdGNoIiwidXBkYXRlIiwid2F0Y2giXX0seyJhcGlHcm91cHMiOlsiIl0sInJlc291cmNlcyI6WyJzZXJ2aWNlcyJdLCJ2ZXJicyI6WyJjcmVhdGUiLCJkZWxldGUiLCJnZXQiLCJsaXN0IiwicGF0Y2giLCJ1cGRhdGUiLCJ3YXRjaCJdfSx7ImFwaUdyb3VwcyI6WyJhcHBzIl0sInJlc291cmNlcyI6WyJkZXBsb3ltZW50cyJdLCJ2ZXJicyI6WyJjcmVhdGUiLCJkZWxldGUiLCJnZXQiLCJsaXN0IiwicGF0Y2giLCJ1cGRhdGUiLCJ3YXRjaCJdfSx7ImFwaUdyb3VwcyI6WyJhcHBzIl0sInJlc291cmNlcyI6WyJkZXBsb3ltZW50cy9maW5hbGl6ZXJzIl0sInZlcmJzIjpbInVwZGF0ZSJdfSx7ImFwaUdyb3VwcyI6WyJjb25maWcub3BlbnNoaWZ0LmlvIl0sInJlc291cmNlcyI6WyJjbHVzdGVydmVyc2lvbnMiXSwidmVyYnMiOlsiY3JlYXRlIiwiZGVsZXRlIiwiZ2V0IiwibGlzdCIsInBhdGNoIiwidXBkYXRlIiwid2F0Y2giXX0seyJhcGlHcm91cHMiOlsiY29uZmlnLm9wZW5zaGlmdC5pbyJdLCJyZXNvdXJjZXMiOlsiY2x1c3RlcnZlcnNpb25zL2ZpbmFsaXplcnMiXSwidmVyYnMiOlsidXBkYXRlIl19LHsiYXBpR3JvdXBzIjpbImNvbmZpZy5vcGVuc2hpZnQuaW8iXSwicmVzb3VyY2VzIjpbImNsdXN0ZXJ2ZXJzaW9ucy9zdGF0dXMiXSwidmVyYnMiOlsiZ2V0IiwicGF0Y2giLCJ1cGRhdGUiXX0seyJhcGlHcm91cHMiOlsiY29uc29sZS5vcGVuc2hpZnQuaW8iXSwicmVzb3VyY2VzIjpbImNvbnNvbGVwbHVnaW5zIl0sInZlcmJzIjpbIioiXX0seyJhcGlHcm91cHMiOlsiIl0sInJlc291cmNlcyI6WyJjb25maWdtYXBzIl0sInZlcmJzIjpbImNyZWF0ZSIsImRlbGV0ZSIsImdldCIsImxpc3QiLCJwYXRjaCIsInVwZGF0ZSIsIndhdGNoIl19LHsiYXBpR3JvdXBzIjpbIiJdLCJyZXNvdXJjZXMiOlsiZXZlbnRzIl0sInZlcmJzIjpbImNyZWF0ZSIsImdldCIsImxpc3QiLCJwYXRjaCIsInVwZGF0ZSIsIndhdGNoIl19LHsiYXBpR3JvdXBzIjpbIiJdLCJyZXNvdXJjZXMiOlsibmFtZXNwYWNlcyJdLCJ2ZXJicyI6WyJnZXQiLCJsaXN0Il19LHsiYXBpR3JvdXBzIjpbIiJdLCJyZXNvdXJjZXMiOlsic2VjcmV0cyJdLCJ2ZXJicyI6WyJjcmVhdGUiLCJkZWxldGUiLCJnZXQiLCJsaXN0IiwicGF0Y2giLCJ1cGRhdGUiLCJ3YXRjaCJdfSx7ImFwaUdyb3VwcyI6WyIiXSwicmVzb3VyY2VzIjpbInNlcnZpY2VzIl0sInZlcmJzIjpbImNyZWF0ZSIsImRlbGV0ZSIsImdldCIsImxpc3QiLCJwYXRjaCIsInVwZGF0ZSIsIndhdGNoIl19LHsiYXBpR3JvdXBzIjpbImNzaS5pYm0uY29tIl0sInJlc291cmNlcyI6WyJpYm1ibG9ja2NzaXMiXSwidmVyYnMiOlsiY3JlYXRlIiwiZGVsZXRlIiwiZ2V0IiwibGlzdCIsInBhdGNoIiwidXBkYXRlIiwid2F0Y2giXX0seyJhcGlHcm91cHMiOlsibW9uaXRvcmluZy5jb3Jlb3MuY29tIl0sInJlc291cmNlcyI6WyJwcm9tZXRoZXVzcnVsZXMiLCJzZXJ2aWNlbW9uaXRvcnMiXSwidmVyYnMiOlsiY3JlYXRlIiwiZGVsZXRlIiwiZ2V0IiwibGlzdCIsInVwZGF0ZSIsIndhdGNoIl19LHsiYXBpR3JvdXBzIjpbIm9kZi5pYm0uY29tIl0sInJlc291cmNlcyI6WyJmbGFzaHN5c3RlbWNsdXN0ZXJzIl0sInZlcmJzIjpbImNyZWF0ZSIsImRlbGV0ZSIsImdldCIsImxpc3QiLCJwYXRjaCIsInVwZGF0ZSIsIndhdGNoIl19LHsiYXBpR3JvdXBzIjpbIm9kZi5pYm0uY29tIl0sInJlc291cmNlcyI6WyJmbGFzaHN5c3RlbWNsdXN0ZXJzL2ZpbmFsaXplcnMiXSwidmVyYnMiOlsidXBkYXRlIl19LHsiYXBpR3JvdXBzIjpbIm9kZi5pYm0uY29tIl0sInJlc291cmNlcyI6WyJmbGFzaHN5c3RlbWNsdXN0ZXJzL3N0YXR1cyJdLCJ2ZXJicyI6WyJnZXQiLCJwYXRjaCIsInVwZGF0ZSJdfSx7ImFwaUdyb3VwcyI6WyJvcGVyYXRvci5vcGVuc2hpZnQuaW8iXSwicmVzb3VyY2VzIjpbImNvbnNvbGVzIl0sInZlcmJzIjpbIioiXX0seyJhcGlHcm91cHMiOlsic2VjdXJpdHkub3BlbnNoaWZ0LmlvIl0sInJlc291cmNlcyI6WyJzZWN1cml0eWNvbnRleHRjb25zdHJhaW50cyJdLCJ2ZXJicyI6WyJjcmVhdGUiLCJnZXQiLCJ1cGRhdGUiXX0seyJhcGlHcm91cHMiOlsic3RvcmFnZS5rOHMuaW8iXSwicmVzb3VyY2VzIjpbInN0b3JhZ2VjbGFzc2VzIl0sInZlcmJzIjpbImNyZWF0ZSIsImRlbGV0ZSIsImdldCIsImxpc3QiLCJwYXRjaCIsInVwZGF0ZSIsIndhdGNoIl19LHsiYXBpR3JvdXBzIjpbImF1dGhlbnRpY2F0aW9uLms4cy5pbyJdLCJyZXNvdXJjZXMiOlsidG9rZW5yZXZpZXdzIl0sInZlcmJzIjpbImNyZWF0ZSJdfSx7ImFwaUdyb3VwcyI6WyJhdXRob3JpemF0aW9uLms4cy5pbyJdLCJyZXNvdXJjZXMiOlsic3ViamVjdGFjY2Vzc3Jldmlld3MiXSwidmVyYnMiOlsiY3JlYXRlIl19XSwic2VydmljZUFjY291bnROYW1lIjoiaWJtLXN0b3JhZ2Utb2RmLW9wZXJhdG9yIn1dLCJkZXBsb3ltZW50cyI6W3sibGFiZWwiOnsib2RmIjoic3RvcmFnZS5pYm0uY29tIn0sIm5hbWUiOiJpYm0tc3RvcmFnZS1vZGYtb3BlcmF0b3IiLCJzcGVjIjp7InJlcGxpY2FzIjoxLCJzZWxlY3RvciI6eyJtYXRjaExhYmVscyI6eyJvZGYiOiJzdG9yYWdlLmlibS5jb20ifX0sInN0cmF0ZWd5Ijp7fSwidGVtcGxhdGUiOnsibWV0YWRhdGEiOnsibGFiZWxzIjp7Im9kZiI6InN0b3JhZ2UuaWJtLmNvbSJ9fSwic3BlYyI6eyJjb250YWluZXJzIjpbeyJhcmdzIjpbIi0tc2VjdXJlLWxpc3Rlbi1hZGRyZXNzPTAuMC4wLjA6ODQ0MyIsIi0tdXBzdHJlYW09aHR0cDovLzEyNy4wLjAuMTo4MDgwLyIsIi0tbG9ndG9zdGRlcnI9dHJ1ZSIsIi0tdj0wIl0sImltYWdlIjoicmVnaXN0cnkucmVkaGF0LmlvL29wZW5zaGlmdDQvb3NlLWt1YmUtcmJhYy1wcm94eTp2NC4xMSIsIm5hbWUiOiJrdWJlLXJiYWMtcHJveHkiLCJwb3J0cyI6W3siY29udGFpbmVyUG9ydCI6ODQ0MywibmFtZSI6Imh0dHBzIn1dLCJyZXNvdXJjZXMiOnt9LCJzZWN1cml0eUNvbnRleHQiOnsiYWxsb3dQcml2aWxlZ2VFc2NhbGF0aW9uIjpmYWxzZSwiY2FwYWJpbGl0aWVzIjp7ImRyb3AiOlsiYWxsIl19fX0seyJhcmdzIjpbIi0taGVhbHRoLXByb2JlLWJpbmQtYWRkcmVzcz06ODA4MSIsIi0tbWV0cmljcy1iaW5kLWFkZHJlc3M9MTI3LjAuMC4xOjgwODAiLCItLWxlYWRlci1lbGVjdCIsIi0tY29uc29sZS1wb3J0PTkwMDMiXSwiY29tbWFuZCI6WyIvbWFuYWdlciJdLCJlbnYiOlt7Im5hbWUiOiJFWFBPUlRFUl9JTUFHRSIsInZhbHVlIjoicXVheS5pby9pYm1vZGZmcy9pYm0tc3RvcmFnZS1vZGYtYmxvY2stZHJpdmVyOjEuNC4xIn0seyJuYW1lIjoiUkVTT1VSQ0VTX05BTUVTUEFDRSIsInZhbHVlRnJvbSI6eyJmaWVsZFJlZiI6eyJmaWVsZFBhdGgiOiJtZXRhZGF0YS5hbm5vdGF0aW9uc1snb2xtLm9wZXJhdG9yTmFtZXNwYWNlJ10ifX19XSwiaW1hZ2UiOiJxdWF5LmlvL2libW9kZmZzL2libS1zdG9yYWdlLW9kZi1vcGVyYXRvcjoxLjQuMSIsImltYWdlUHVsbFBvbGljeSI6IkFsd2F5cyIsImxpdmVuZXNzUHJvYmUiOnsiaHR0cEdldCI6eyJwYXRoIjoiL2hlYWx0aHoiLCJwb3J0Ijo4MDgxfSwiaW5pdGlhbERlbGF5U2Vjb25kcyI6MTUsInBlcmlvZFNlY29uZHMiOjIwfSwibmFtZSI6Im1hbmFnZXIiLCJyZWFkaW5lc3NQcm9iZSI6eyJodHRwR2V0Ijp7InBhdGgiOiIvcmVhZHl6IiwicG9ydCI6ODA4MX0sImluaXRpYWxEZWxheVNlY29uZHMiOjUsInBlcmlvZFNlY29uZHMiOjEwfSwicmVzb3VyY2VzIjp7ImxpbWl0cyI6eyJjcHUiOiIxMDBtIiwibWVtb3J5IjoiMzAwTWkifSwicmVxdWVzdHMiOnsiY3B1IjoiMTAwbSIsIm1lbW9yeSI6IjIwME1pIn19LCJzZWN1cml0eUNvbnRleHQiOnsiYWxsb3dQcml2aWxlZ2VFc2NhbGF0aW9uIjpmYWxzZSwiY2FwYWJpbGl0aWVzIjp7ImRyb3AiOlsiYWxsIl19fSwidm9sdW1lTW91bnRzIjpbeyJtb3VudFBhdGgiOiIvY29uZmlnIiwibmFtZSI6Im1hbmFnZXItY29uZmlnIn1dfV0sInNlY3VyaXR5Q29udGV4dCI6eyJydW5Bc05vblJvb3QiOnRydWV9LCJzZXJ2aWNlQWNjb3VudE5hbWUiOiJpYm0tc3RvcmFnZS1vZGYtb3BlcmF0b3IiLCJ0ZXJtaW5hdGlvbkdyYWNlUGVyaW9kU2Vjb25kcyI6MTAsInZvbHVtZXMiOlt7ImNvbmZpZ01hcCI6eyJuYW1lIjoiZmxhc2hzeXN0ZW0tY3NpLWNyIn0sIm5hbWUiOiJtYW5hZ2VyLWNvbmZpZyJ9XX19fX0seyJsYWJlbCI6eyJhcHAiOiJpYm0tb2RmLWNvbnNvbGUifSwibmFtZSI6ImlibS1vZGYtY29uc29sZSIsInNwZWMiOnsic2VsZWN0b3IiOnsibWF0Y2hMYWJlbHMiOnsiYXBwIjoiaWJtLW9kZi1jb25zb2xlIn19LCJzdHJhdGVneSI6e30sInRlbXBsYXRlIjp7Im1ldGFkYXRhIjp7ImxhYmVscyI6eyJhcHAiOiJpYm0tb2RmLWNvbnNvbGUifX0sInNwZWMiOnsiY29udGFpbmVycyI6W3siaW1hZ2UiOiJxdWF5LmlvL2libW9kZmZzL2libS1zdG9yYWdlLW9kZi1wbHVnaW46MS40LjEiLCJuYW1lIjoiaWJtLW9kZi1jb25zb2xlIiwicG9ydHMiOlt7ImNvbnRhaW5lclBvcnQiOjkwMDMsInByb3RvY29sIjoiVENQIn1dLCJyZXNvdXJjZXMiOnsibGltaXRzIjp7ImNwdSI6IjUwbSIsIm1lbW9yeSI6IjEwME1pIn19LCJzZWN1cml0eUNvbnRleHQiOnsiYWxsb3dQcml2aWxlZ2VFc2NhbGF0aW9uIjpmYWxzZSwiY2FwYWJpbGl0aWVzIjp7ImRyb3AiOlsiYWxsIl19fSwidm9sdW1lTW91bnRzIjpbeyJtb3VudFBhdGgiOiIvdmFyL3NlcnZpbmctY2VydCIsIm5hbWUiOiJpYm0tb2RmLWNvbnNvbGUtc2VydmluZy1jZXJ0IiwicmVhZE9ubHkiOnRydWV9XX1dLCJzZWN1cml0eUNvbnRleHQiOnsicnVuQXNOb25Sb290Ijp0cnVlfSwidm9sdW1lcyI6W3sibmFtZSI6ImlibS1vZGYtY29uc29sZS1zZXJ2aW5nLWNlcnQiLCJzZWNyZXQiOnsic2VjcmV0TmFtZSI6ImlibS1vZGYtY29uc29sZS1zZXJ2aW5nLWNlcnQifX1dfX19fV0sInBlcm1pc3Npb25zIjpbeyJydWxlcyI6W3siYXBpR3JvdXBzIjpbIm1vbml0b3JpbmcuY29yZW9zLmNvbSJdLCJyZXNvdXJjZXMiOlsiKiJdLCJ2ZXJicyI6WyIqIl19LHsiYXBpR3JvdXBzIjpbIiIsImNvb3JkaW5hdGlvbi5rOHMuaW8iXSwicmVzb3VyY2VzIjpbImNvbmZpZ21hcHMiLCJsZWFzZXMiXSwidmVyYnMiOlsiZ2V0IiwibGlzdCIsIndhdGNoIiwiY3JlYXRlIiwidXBkYXRlIiwicGF0Y2giLCJkZWxldGUiXX0seyJhcGlHcm91cHMiOlsiIl0sInJlc291cmNlcyI6WyJldmVudHMiXSwidmVyYnMiOlsiY3JlYXRlIiwicGF0Y2giXX1dLCJzZXJ2aWNlQWNjb3VudE5hbWUiOiJpYm0tc3RvcmFnZS1vZGYtb3BlcmF0b3IifV19LCJzdHJhdGVneSI6ImRlcGxveW1lbnQifSwiaW5zdGFsbE1vZGVzIjpbeyJzdXBwb3J0ZWQiOnRydWUsInR5cGUiOiJPd25OYW1lc3BhY2UifSx7InN1cHBvcnRlZCI6dHJ1ZSwidHlwZSI6IlNpbmdsZU5hbWVzcGFjZSJ9LHsic3VwcG9ydGVkIjpmYWxzZSwidHlwZSI6Ik11bHRpTmFtZXNwYWNlIn0seyJzdXBwb3J0ZWQiOmZhbHNlLCJ0eXBlIjoiQWxsTmFtZXNwYWNlcyJ9XSwia2V5d29yZHMiOlsiT0RGIiwic3RvcmFnZSIsImJsb2NrIHN0b3JhZ2UiLCJmbGFzaHN5c3RlbSIsImlibSJdLCJsaW5rcyI6W3sibmFtZSI6IklCTSBTdG9yYWdlIE9ERiBPcGVyYXRvciIsInVybCI6Imh0dHBzOi8vZ2l0aHViLmNvbS9JQk0vaWJtLXN0b3JhZ2Utb2RmLW9wZXJhdG9yIn1dLCJtYWludGFpbmVycyI6W3siZW1haWwiOiJzdXBwb3J0QGlibS5jb20iLCJuYW1lIjoiSUJNIFN1cHBvcnQifV0sIm1hdHVyaXR5IjoiYWxwaGEiLCJwcm92aWRlciI6eyJuYW1lIjoiSUJNIn0sInZlcnNpb24iOiIxLjQuMSJ9fQ== + data: eyJhcGlWZXJzaW9uIjoib3BlcmF0b3JzLmNvcmVvcy5jb20vdjFhbHBoYTEiLCJraW5kIjoiQ2x1c3RlclNlcnZpY2VWZXJzaW9uIiwibWV0YWRhdGEiOnsiYW5ub3RhdGlvbnMiOnsiYWxtLWV4YW1wbGVzIjoiW1xuICB7XG4gICAgXCJhcGlWZXJzaW9uXCI6IFwib2RmLmlibS5jb20vdjFhbHBoYTFcIixcbiAgICBcImtpbmRcIjogXCJGbGFzaFN5c3RlbUNsdXN0ZXJcIixcbiAgICBcIm1ldGFkYXRhXCI6IHtcbiAgICAgIFwibmFtZVwiOiBcImZsYXNoc3lzdGVtY2x1c3Rlci1zYW1wbGVcIixcbiAgICAgIFwibmFtZXNwYWNlXCI6IFwib3BlbnNoaWZ0LXN0b3JhZ2VcIlxuICAgIH0sXG4gICAgXCJzcGVjXCI6IHtcbiAgICAgIFwiZGVmYXVsdFBvb2xcIjoge1xuICAgICAgICBcImZzVHlwZVwiOiBcImV4dDRcIixcbiAgICAgICAgXCJwb29sTmFtZVwiOiBcIlBvb2wwXCIsXG4gICAgICAgIFwic3BhY2VFZmZpY2llbmN5XCI6IFwidGhpY2tcIixcbiAgICAgICAgXCJzdG9yYWdlY2xhc3NOYW1lXCI6IFwib2RmLWZsYXNoc3lzdGVtY2x1c3Rlci1zYW1wbGVcIixcbiAgICAgICAgXCJ2b2x1bWVOYW1lUHJlZml4XCI6IFwib2RmXCJcbiAgICAgIH0sXG4gICAgICBcImluc2VjdXJlU2tpcFZlcmlmeVwiOiB0cnVlLFxuICAgICAgXCJuYW1lXCI6IFwiZmxhc2hzeXN0ZW0teHh4XCIsXG4gICAgICBcInNlY3JldFwiOiB7XG4gICAgICAgIFwibmFtZVwiOiBcImZzLXNlY3JldHMtZXhhbXBsZVwiLFxuICAgICAgICBcIm5hbWVzcGFjZVwiOiBcIm9wZW5zaGlmdC1zdG9yYWdlXCJcbiAgICAgIH1cbiAgICB9XG4gIH1cbl0iLCJjYXBhYmlsaXRpZXMiOiJTZWFtbGVzcyBVcGdyYWRlcyIsImNvbnNvbGUub3BlbnNoaWZ0LmlvL3BsdWdpbnMiOiJbXCJpYm0tc3RvcmFnZS1vZGYtcGx1Z2luXCJdIiwib2xtLnNraXBSYW5nZSI6Ilx1MDAzZT0wLjAuMSBcdTAwM2MxLjUuMCIsIm9wZXJhdG9ycy5vcGVyYXRvcmZyYW1ld29yay5pby9idWlsZGVyIjoib3BlcmF0b3Itc2RrLXYxLjI1LjAiLCJvcGVyYXRvcnMub3BlcmF0b3JmcmFtZXdvcmsuaW8vb3BlcmF0b3ItdHlwZSI6Im5vbi1zdGFuZGFsb25lIiwib3BlcmF0b3JzLm9wZXJhdG9yZnJhbWV3b3JrLmlvL3Byb2plY3RfbGF5b3V0IjoiZ28ua3ViZWJ1aWxkZXIuaW8vdjMifSwibmFtZSI6ImlibS1zdG9yYWdlLW9kZi1vcGVyYXRvci52MS41LjAiLCJuYW1lc3BhY2UiOiJwbGFjZWhvbGRlciJ9LCJzcGVjIjp7ImFwaXNlcnZpY2VkZWZpbml0aW9ucyI6e30sImN1c3RvbXJlc291cmNlZGVmaW5pdGlvbnMiOnsib3duZWQiOlt7ImRlc2NyaXB0aW9uIjoiRmxhc2hTeXN0ZW1DbHVzdGVyIGlzIHRoZSBTY2hlbWEgZm9yIHRoZSBGbGFzaFN5c3RlbUNsdXN0ZXJzIEFQSSIsImRpc3BsYXlOYW1lIjoiRmxhc2ggU3lzdGVtIENsdXN0ZXIiLCJraW5kIjoiRmxhc2hTeXN0ZW1DbHVzdGVyIiwibmFtZSI6ImZsYXNoc3lzdGVtY2x1c3RlcnMub2RmLmlibS5jb20iLCJ2ZXJzaW9uIjoidjFhbHBoYTEifV19LCJkZXNjcmlwdGlvbiI6IklCTSBTdG9yYWdlIE9ERiBvcGVyYXRvciBwcm92aWRlcyBiYXNpYyBzdG9yYWdlIGNhcGFiaWxpdGllcyBhbmQgZXh0ZW5kZWQgbWFuYWdlbWVudCBmdW5jdGlvbnMgdGhyb3VnaCBPcGVuU2hpZnQgZGF0YSBmb3VuZGF0aW9uIGZyYW1ld29yayBmb3IgYXBwbGljYXRpb25zLiIsImRpc3BsYXlOYW1lIjoiSUJNIFN0b3JhZ2UgT0RGIG9wZXJhdG9yIiwiaWNvbiI6W3siYmFzZTY0ZGF0YSI6ImlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUVYQUFBQWVZQ0FZQUFBQ1dLRWdoQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUF5QnBWRmgwV0UxTU9tTnZiUzVoWkc5aVpTNTRiWEFBQUFBQUFEdy9lSEJoWTJ0bGRDQmlaV2RwYmowaTc3dS9JaUJwWkQwaVZ6Vk5NRTF3UTJWb2FVaDZjbVZUZWs1VVkzcHJZemxrSWo4K0lEeDRPbmh0Y0cxbGRHRWdlRzFzYm5NNmVEMGlZV1J2WW1VNmJuTTZiV1YwWVM4aUlIZzZlRzF3ZEdzOUlrRmtiMkpsSUZoTlVDQkRiM0psSURVdU1DMWpNRFl3SURZeExqRXpORGMzTnl3Z01qQXhNQzh3TWk4eE1pMHhOem96TWpvd01DQWdJQ0FnSUNBZ0lqNGdQSEprWmpwU1JFWWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJajRnUEhKa1pqcEVaWE5qY21sd2RHbHZiaUJ5WkdZNllXSnZkWFE5SWlJZ2VHMXNibk02ZUcxd1BTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZJaUI0Yld4dWN6cDRiWEJOVFQwaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOTRZWEF2TVM0d0wyMXRMeUlnZUcxc2JuTTZjM1JTWldZOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXpWSGx3WlM5U1pYTnZkWEpqWlZKbFppTWlJSGh0Y0RwRGNtVmhkRzl5Vkc5dmJEMGlRV1J2WW1VZ1VHaHZkRzl6YUc5d0lFTlROU0JYYVc1a2IzZHpJaUI0YlhCTlRUcEpibk4wWVc1alpVbEVQU0o0YlhBdWFXbGtPalF4UkRVNE9EUTNOREZEUlRFeFJUWTROekF4T1RVeVFqbEdNemd4TWpJeElpQjRiWEJOVFRwRWIyTjFiV1Z1ZEVsRVBTSjRiWEF1Wkdsa09qUXhSRFU0T0RRNE5ERkRSVEV4UlRZNE56QXhPVFV5UWpsR016Z3hNakl4SWo0Z1BIaHRjRTFOT2tSbGNtbDJaV1JHY205dElITjBVbVZtT21sdWMzUmhibU5sU1VROUluaHRjQzVwYVdRNk5ERkVOVGc0TkRVME1VTkZNVEZGTmpnM01ERTVOVEpDT1VZek9ERXlNakVpSUhOMFVtVm1PbVJ2WTNWdFpXNTBTVVE5SW5odGNDNWthV1E2TkRGRU5UZzRORFkwTVVORk1URkZOamczTURFNU5USkNPVVl6T0RFeU1qRWlMejRnUEM5eVpHWTZSR1Z6WTNKcGNIUnBiMjQrSUR3dmNtUm1PbEpFUmo0Z1BDOTRPbmh0Y0cxbGRHRStJRHcvZUhCaFkydGxkQ0JsYm1ROUluSWlQejVTbjNaSkFBRElaVWxFUVZSNDJ1emRYWEliTnhxR1VkcmxmU0FybVVaMmhLeUE4QXBHTzJJakt4bXRoTk50azdIeUkwZitUSW9OOURsVmtDZ25GNmszRjgybXFZY2Z6dWZ6QVFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBSC9mUkJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU1RSXVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkJBaTRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUVDTGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUVFJdUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQkFpNEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFRUNMZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFRUUl1QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJCQWk0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVFQ0xnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFRSXVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkJBaTRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUVDTGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUVFJdUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQkFpNEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFRUNMZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFRUUl1QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJCQWk0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVFQ0xnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFRSXVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkJBaTRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUVDTGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUVFJdUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQkFpNEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFRUNMZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFRUUl1QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJCQWk0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVFQ0xnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFRSXVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkJBaTRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUVDTGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUVFJdUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQkFpNEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFRUNMZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFRUUl1QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJCQWk0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVFQ0xnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFRSXVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkJBaTRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUVDTGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUVFJdUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQkFpNEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFRUNMZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFRUUl1QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJCQWk0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVFQ0xnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFRSXVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkJBaTRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUVDTGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUVFJdUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQkFpNEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFRUNMZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFRUUl1QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJCQWk0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVFQ0xnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFRSXVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkJBaTRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUVDTGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUVFJdUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQkFpNEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFRUNMZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFRUUl1QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJCQWk0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVFQ0xnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFRSXVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkJBaTRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUVDTGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUVFJdUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQkFpNEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFRUNMZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFRUUl1QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJCQWk0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVFQ0xnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFRSXVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkJBaTRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUVDTGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUVFJdUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQkFpNEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFRUNMZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFRUUl1QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJCQWk0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVFQ0xnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFRSXVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkJBaTRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUVDTGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUVFJdUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQkFpNEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFRUNMZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFRUUl1QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJCQWk0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVFQ0xnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFRSXVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkJBaTRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUVDTGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUVFJdUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQkFpNEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFRUNMZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFRUUl1QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJCQWk0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVFQ0xnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFRSXVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkJBaTRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUVDTGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUVFJdUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQkFpNEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFRUNMZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFRUUl1QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJCQWk0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVFQ0xnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFRSXVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkJBaTRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUVDTGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUVFJdUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQkFpNEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFRUNMZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFRUUl1QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJCQWk0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVFQ0xnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFRSXVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkJBaTRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUVDTGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUVFJdUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQkFpNEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFRUNMZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFRUUl1QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJCQWk0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVFQ0xnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFRSXVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkJBaTRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUVDTGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUVFJdUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQkFpNEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFRUNMZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFRUUl1QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJCQWk0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVFQ0xnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFRSXVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkJuMHpBTGYzeTIrOW5Ld0FBQUJ0VW41K216MmJvV3lydHVQNi90QVFBQU1EdXpKZnpqNzUzejM4KysrdExnQjU5K1BEQkNCdVNTbk5CQlFBZ1luNSttbjdkK24razE0OEE0UHQ2ZUszT2V3c0JBUGdYOVgvLy9ZL2ZLZUpkQ0xnQUFBQUFBQUFBc0dYNWN2NVJLcTIrOG8vcUw3LzkvdkxuOVplR21qa0JBQUFBM2tVMkFRRHdUcW9KQUFDQUxSQndBUUFBQUFBQUFHQkU5YTkva0VyNzdyL3ovRFQ1dEIwQUFBQ0FHMG1sSGIzZUFnRGMrZm5HWkFVQUFHQXJCRndBQUFBQUFBQUEyS3Y2OG9kVTJzdWY1OHY1OHZqNWFXcm1BZ0FBQVBnaGVUa0NMZ0RBUFZVVEFBQUFXeUhnQWdBQUFBQUFBQUIvbHkvbmkxVCsxRytwMXdjK1JSb0FBQURnVmRrRUFJRG5Hd0FBd0Y0SXVBQUFBQUFBQUFEQWo2blhCNm0wNitQNWNyNDhmbjZhbXBrQUFBQ0F2VXVsSFFWd0FZQjdQYyt3QWdBQXNDVUNMZ0FBQUFBQUFBRHc4L0xoeGFjOHB2Skh2NlZldm91NkFBQUFBSHRVbHlQZ0FnRGNRellCQUFDd0pRSXVBQUFBQUFBQUFIQS85ZnJncjFFWG56NE5BQUFBN0VFcWJSSzJCUUR1SUpzQUFBRFlFZ0VYQUFBQUFBQUFBSGhmZGYyU1NxdVhuK2ZyOGN0TUFBQUF3SUR5Y3J6bUFRRGNUQ3J0YUFVQUFHQnJCRndBQUFBQUFBQUE0TEh5NWF4dk9GNi96WmR6ZUg2YVBwc0hBQUFBNkZ4ZGp0YzRBSUJiUDc4QUFBRFlGQUVYQUFBQUFBQUFBTmlXZlBnV2RLbVhQL3Z5WGRBRkFBQUE2RkVxYlhwK21wb2xBSUJiUEsrd0FnQUFzRVVDTGdBQUFBQUFBQUN3ZlhYOThwZWd5K3dYbndBQUFJQk8xT1g4YWdZQTRBYXlDUUFBZ0MwU2NBRUFBQUFBQUFDQS90VDFTeXBmK2kzejlRaTZBQUFBQUJ1VlRRQUEzRWcxQVFBQXNFVUNMZ0FBQUFBQUFBRFF0M3c1MTZCTFhiODhQMDJmVFFNQUFBQnNSU3J0NlBVS0FPQW5uMDlNVmdBQUFMWkt3QVVBQUFBQUFBQUF4bExYTDZtMDlmdDhQYzlQVXpNTkFBQUE4RUI1T1FJdUFNRFBxQ1lBQUFDMlNzQUZBQUFBQUFBQUFNYVZMMmNOdXF6ZjZrSE1CUUFBQUhpTWJBSUF3UE1KQUFCZ1ZCOU5BQUFBQUFBQUFBQzdVWmN6cDlMT3l6bXV4eVFBQUFEQWUvRmFCQURnZVFRQUFEQ3FUeVlBQUFBQUFBQUFnRjJxNjVkVTJ2cDlYcy96MC9UWkxBQUFBTUFkMWVWNC9RRUFpTWdtQUFBQXR1eWpDUUFBQUFBQUFBQmc5L0p5YWlydHZKeVRUN0VFQUFBQTdpV1ZObGtCQUFqSUpnQUFBTGJza3drQUFBQUFBQUFBZ0JmeWVsSnBkZmsrcitmNWFmTEoyQUFBQU1DdDVPVTBNd0FBYnlVOER3QUE5T0NqQ1FBQUFBQUFBQUNBVitUbDFGVGFlVGtuYjVBR0FBQUFicUNhQUFEdy9BRUFBQmlOZ0FzQUFBQUFBQUFBOEJiNThDM21jbHpPWkJJQUFBQWd3dXNLQUlEbkRRQUF3R2crbVFBQUFBQUFBQUFBK0VGMS9aSkt1ejZlbjUrbVpoWUFBQURnamVweWZqVURBUEFHMlFRQUFFQVBQcG9BQUFBQUFBQUFBUGdKZFRsekt1MjhuS001QUFBQWdEZklKZ0FBM3FpYUFBQUE2SUdBQ3dBQUFBQUFBQUJ3Sy9VU2Nqa3RaeklIQUFBQThCb2hXQURnRGM4WC9GMERBQURRalU4bUFBQUFBQUFBQUFCdUxDOW5UcVd0ait2NitQbHBhbVlCQUFBQVhzakwrV3dHQU9BN3Fna0FBSUJlQ0xnQUFBQUFBQUFBQVBkVTF5K3B0UG53TmVUaUY3TUFBQUNBVlRZQkFPRDVBZ0FBTUlxUEpnQUFBQUFBQUFBQTNrRmVUazJsblpkelhNNWtFZ0FBQU5pMzlUVUNLd0FBbmljQUFBQWpFSEFCQUFBQUFBQUFBTjViWGM2Y1NqdDVBellBQUFEc1dqVUJBUENLYkFJQUFLQW5BaTRBQUFBQUFBQUF3S1BrNWRSVTJsbklCUUFBQVBZcGxUWlpBUUQ0QjlrRUFBQkFUd1JjQUFBQUFBQUFBSUF0dUlaY1RuNXhDd0FBQUhZbG13QUFlRW4wSFFBQTZKR0FDd0FBQUFBQUFBQ3dKWGs1OHlYbTRnM2FBQUFBTUw1cUFnREE4d01BQUtCM0FpNEFBQUFBQUFBQXdGWlZJUmNBQUFBWTMzTHZQMWtCQVBDOEFBQUE2Sm1BQ3dBQUFBQUFBQUN3ZGRlUXk4a2J0d0VBQUdETWUzOFRBQUFYMlFRQUFFQ1BCRndBQUFBQUFBQUFnRjdrNWN4Q0xnQUFBRERrUFQ4QXdLcWFBQUFBNkpHQUN3QUFBQUFBQUFEUW0zejRHbkk1TCtkb0RnQUFBT2lmZTN3QVFMd2RBQURvbVlBTEFBQUFBQUFBQU5Dekt1UUNBQUFBUThnbUFJRGRxeVlBQUFCNkplQUNBQUFBQUFBQUFJeEF5QVVBQUFENmxrMEFBSjRQbUFBQUFPaVZnQXNBQUFBQUFBQUFNSkpyeU9XMG5Na2NBQUFBMEE5aFZnRHdQQUFBQUtCWEFpNEFBQUFBQUFBQXdJanljbVloRndBQUFPaEtOUUVBN0ZZMkFRQUEwRE1CRndBQUFBQUFBQUJnWlBrZzVBSUFBQURkY1A4T0FMdVZUUUFBQVBSTXdBVUFBQUFBQUFBQTJJTjhFSElCQUFDQVh1N2hBWUFkU2FVZHJRQUFBUFJPd0FVQUFBQUFBQUFBMkpOOEVISUJBQUNBTGFzbUFBRFhmd0FBZ040SXVBQUFBQUFBQUFBQWU1UVBRaTRBQUFDd1NlN1ZBY0IxSHdBQW9EY0NMZ0FBQUFBQUFBREFudVdEa0FzQUFBQnNUVFVCQU94R05nRUFBREFDQVJjQUFBQUFBQUFBQUNFWEFBQUEyTnA5T2dDd0Q5VUVBQURBQ0FSY0FBQUFBQUFBQUFDK3lRY2hGd0FBQUhpNDViNzhhQVVBR1A1NjczVjRBQUJnR0FJdUFBQUFBQUFBQUFCL2x3OWZReTUrV1F3QUFBQWVkMjhPQUl5dG1nQUFBQmlGZ0FzQUFBQUFBQUFBd090cUt1MHM1QUlBQUFEdkxwc0FBRnp2QVFBQWVpSGdBZ0FBQUFBQUFBRHc3NFJjQUFBQTRKMjVEd2NBMTNrQUFJQmVDTGdBQUFBQUFBQUFBTHpkTmVReW1RSUFBQUR1Zng5dUFnQVlWallCQUFBd0VnRVhBQUFBQUFBQUFJQWZONmZTVGtJdUFBQUFjRi91dlFGZ1dOa0VBQURBU0FSY0FBQUFBQUFBQUFCaThrSElCUUFBQU43ai9oc0FHRWdxN1dnRkFBQmdOQUl1QUFBQUFBQUFBQUEvSngrK2hseTg0UndBQUFCdXI1b0FBRnpmQVFBQXRrN0FCUUFBQUFBQUFBRGdObW9xN1N6a0FnQUFBTGUxM0d0UFZnQUExM1VBQUlBdEUzQUJBQUFBQUFBQUFMaXRhOGpGbTlBQkFBRGdSdmZhSmdDQVlXUVRBQUFBSXhKd0FRQUFBQUFBQUFDNGp6bVZkaEp5QVFBQWdKK1dUUUFBdzZnbUFBQUFSaVRnQWdBQUFBQUFBQUJ3UC9ud05lUnlOQVVBQUFERXViY0dnQ0d1NTRMbkFBREFzQVJjQUFBQUFBQUFBQUR1cjZiU3puN1pEQUFBQU1LeUNRQ2dlOVVFQUFEQXFBUmNBQUFBQUFBQUFBRGV6eHB5T2ZtVVVRQUFBUGhoMlFRQTRIb09BQUN3VlFJdUFBQUFBQUFBQUFEdkt5OW5Ya011cGdBQUFJQzNXKzZsajFZQUFOZHhBQUNBTFJKd0FRQUFBQUFBQUFCNGpKeEtPM3ZUT2dBQUFMeFpOUUVBZEN1YkFBQUFHSm1BQ3dBQUFBQUFBQURBWTlWVTJtazVreWtBQUFEZys5dy9BMEMzc2drQUFJQ1JDYmdBQUFBQUFBQUFBRHhlWHM2Y1NqdWFBZ0FBQVA3MUhob0E2SWpYdmdFQWdEMFFjQUVBQUFBQUFBQUEySTZhU2p2N05IRUFBQUI0L2Q3WkJBRGcrZzBBQUxBMUFpNEFBQUFBQUFBQUFOc3pwOUpPWmdBQUFJQy9FejRGQU5kdEFBQ0FyUkZ3QVFBQUFBQUFBQURZcHB4S095L25hQW9BQUFENGsyb0NBT2hHTmdFQUFMQUhBaTRBQUFBQUFBQUFBTnRXVTJrbm4xSUtBQUFBZjhnbUFJQnVWQk1BQUFCN0lPQUNBQUFBQUFBQUFMQjllVGx6S3Uxb0NnQUFBRGdjM0NNRFFCZlhhMkZ5QUFCZ053UmNBQUFBQUFBQUFBRDZVVk5wSjI5NkJ3QUFnQyt4VXdCZzI2b0pBQUNBdlJCd0FRQUFBQUFBQUFEb1MxN092SVpjVEFFQUFNRE83NDhCQU5kckFBQ0FUUkJ3QVFBQUFBQUFBQURvVTA2bG5aY3ptUUlBQUlBOVd1NkpqMVlBQU5kcEFBQ0FMUkJ3QVFBQUFBQUFBQURvMjV4S081a0JBQUNBSGFvbUFJRE55aVlBQUFEMlJNQUZBQUFBQUFBQUFLQi9PWlYyWHM1a0NnQUFBUGJFdlRBQWJGWTJBUUFBc0NjQ0xnQUFBQUFBQUFBQTQ1aFRhU2N6QUFBQXNDUFpCQUN3TGFtMG94VUFBSUM5RVhBQkFBQUFBQUFBQUJoTFRxV2RmUUk1QUFBQU8xRk5BQUN1endBQUFJOG00QUlBQUFBQUFBQUFNS2JacDV3Q0FBQ3dCeUttQU9DNkRBQUE4R2dDTGdBQUFBQUFBQUFBNDZxcHRKTTN6QU1BQURENi9hOEpBR0F6c2drQUFJQTlFbkFCQUFBQUFBQUFBQmhiWHM2Y1NqdWFBZ0FBZ0lIdmZRR0FiYWdtQUFBQTlrakFCUUFBQUFBQUFBQmdIMm9xN2JTY3lSUUFBQUNNUnJnVUFEWnhQZmI2TXdBQXNGc0NMZ0FBQUFBQUFBQUErNUdYTTNzVFBRQUFBSVBlOHdJQWoxVk5BQUFBN0pXQUN3QUFBQUFBQUFEQS9xd1JsNU1aQUFBQUdFZzJBUUM0SGdNQUFEeUtnQXNBQUFBQUFBQUF3RDdsVk5wNU9aTXBBQUFBR01GeWozdTBBZ0M0RGdNQUFEeUNnQXNBQUFBQUFBQUF3TDdOM2xnUEFBREFJS29KQU9CaHNna0FBSUE5RTNBQkFBQUFBQUFBQUtDbTBrN0xtVXdCQUFCQXo5emJBc0REWkJNQUFBQjdKdUFDQUFBQUFBQUFBUHlmdmJzOWN0eTR3akNxVlNrUE9CTGpPaU00QXJRajhHWTBiRWZpaldSTXJ0ZXI4YzRYZVlsdWdNQTVWU3o5VmIycUFuVlp3NGR3RWVmWHlSZmRBQUFBMk1GOUN3QjBORXgxdGdJQUFIQjBBaTRBQUFBQUFBQUFBTHgwaWJnOG1RRUFBSUFIVlV3QUFONS9BUUFBZWhOd0FRQUFBQUFBQUFEZ1YzR0p1Snhmb3lrQUFBQjROTzVaQVBDK0N3QUEwSnVBQ3dBQUFBQUFBQUFBYjRuejYrU1A3d0VBQUhoQXhRUUEwRTJZQUFBQVFNQUZBQUFBQUFBQUFJQ1BYU0l1VDJZQUFBRGdnWVFKQUtDYllnSUFBQUFCRndBQUFBQUFBQUFBUGhlWGlNdjVOWm9DQUFDQVIzQytZV2NyQUVEejkxdWZHUU1BQVB3ZzRBSUFBQUFBQUFBQXdEWGkvRHI1ZzN3QUFBQWU2STRGQU5vcUpnQUFBUGd2QVJjQUFBQUFBQUFBQUc1eGliZzhtUUVBQUlDTkN4TUFnUGRiQUFDQVhnUmNBQUFBQUFBQUFBQzRWWWk0QUFBQXNIWG4yM1cyQWdCNG53VUFBT2hCd0FVQUFBQUFBQUFBZ0l4THhPWDUvQnBOQVFBQXdFWVZFd0JBTTJFQ0FBQ0FQd200QUFBQUFBQUFBQUJ3ajVOZldnVUFBR0NyaEVjQm9Ka3dBUUFBd0o4RVhBQUFBQUFBQUFBQXVGY1pwdnBrQmdBQUFEWW9UQUFBeXhMMUJnQUFlRTNBQlFBQUFBQUFBQUNBSmNRbDR1S1h6UUVBQU5pWVlnSUE4UDRLQUFEUW1vQUxBQUFBQUFBQUFBQkxpZlBySk9JQ0FBREFscmhUQWNEN0tnQUFRR3NDTGdBQUFBQUFBQUFBTE8wU2Nabk5BQUFBd0VZVUV3REFZc0lFQUFBQXJ3bTRBQUFBQUFBQUFBRFFRaG1tK21RR0FBQUFOaUJNQUFDTEtTWUFBQUI0VGNBRkFBQUFBQUFBQUlCV1FzUUZBQUNBTFRqZnA3TVZBT0R1OTlQUkNnQUFBRzhUY0FFQUFBQUFBQUFBb0tWTHhPWFpIL1lEQUFDdzluMXFBZ0M0V3pFQkFBREEyd1JjQUFBQUFBQUFBQURvNFNUaUFnQUF3SXJDQkFEZy9SUUFBS0FWQVJjQUFBQUFBQUFBQUhxNVJGeG1Nd0FBQUxBR055a0FlQjhGQUFCb1JjQUZBQUFBQUFBQUFJQ2V5akRWSnpNQUFBQ3d4azFxQWdCSUN4TUFBQUM4VDhBRkFBQUFBQUFBQUlEZVFzUUZBQUNBTlp6djBkRUtBSkFTSmdBQUFIaWZnQXNBQUFBQUFBQUFBR3Y0SG5IeHhUa0FBQUI2MzZNbUFJRGJERk9kclFBQUFQQXhBUmNBQUFBQUFBQUFBTllTNTlkSnhBVUFBSUNPaWdrQXdQc25BQURBMGdSY0FBQUFBQUFBQUFCWW00Z0xBQUFBM1p4djBOa0tBSEQxKzZiUGJnRUFBSzRnNEFJQUFBQUFBQUFBd0JhSXVBQUFBTkJMbUFBQXZHOENBQUFzU2NBRkFBQUFBQUFBQUlDdE9Qa1ZkQUFBQURvSUV3REExWW9KQUFBQVBpZmdBZ0FBQUFBQUFBREFscFJocWs5bUFBQUFvQ1VCVVFDNDZ2MXl0QUlBQU1CMUJGd0FBQUFBQUFBQUFOaWFFSEVCQUFDZzllMXBBZ0Q0VkRFQkFBREFkZjR3QVk1eUFBRGdBRTRtMk0xL1IzY25BQUFBQUVCZnhRUUFBQUFBaDNYNnpkOWdBZ0R3K1A5UEMxMThlWDUrdGdJQUFBQUFBQUFBQUFBQUFBQUFBQUFBUU1MdkpnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQXlCRndBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQklFbkFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBRWdTY0FFQUFBQUFBQUFBQUFBQUFBQUFBQUFBU0JKd0FRQUFBQUFBQUFBQUFBQUFBQUFBQUFCSUVuQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFFZ1NjQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFTQkp3QVFBQUFBQUFBQUFBQUFBQUFBQUFBQUJJRW5BQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUVnU2NBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQVNCSndBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQklFbkFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBRWdTY0FFQUFBQUFBQUFBQUFBQUFBQUFBQUFBU0JKd0FRQUFBQUFBQUFBQUFBQUFBQUFBQUFCSUVuQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFFZ1NjQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFTQkp3QVFBQUFBQUFBQUFBQUFBQUFBQUFBQUJJRW5BQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUVnU2NBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQVNCSndBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQklFbkFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBRWdTY0FFQUFBQUFBQUFBQUFBQUFBQUFBQUFBU0JKd0FRQUFBQUFBQUFBQUFBQUFBQUFBQUFCSUVuQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFFZ1NjQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFTQkp3QVFBQUFBQUFBQUFBQUFBQUFBQUFBQUJJRW5BQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUVnU2NBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQVNCSndBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQklFbkFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBRWdTY0FFQUFBQUFBQUFBQUFBQUFBQUFBQUFBU0JKd0FRQUFBQUFBQUFBQUFBQUFBQUFBQUFCSUVuQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFFZ1NjQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFTQkp3QVFBQUFBQUFBQUFBQUFBQUFBQUFBQUJJRW5BQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUVnU2NBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQVNCSndBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQklFbkFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBRWdTY0FFQUFBQUFBQUFBQUFBQUFBQUFBQUFBU0JKd0FRQUFBQUFBQUFBQUFBQUFBQUFBQUFCSUVuQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFFZ1NjQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFTQkp3QVFBQUFBQUFBQUFBQUFBQUFBQUFBQUJJRW5BQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUVnU2NBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQVNCSndBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQklFbkFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBRWdTY0FFQUFBQUFBQUFBQUFBQUFBQUFBQUFBU0JKd0FRQUFBQUFBQUFBQUFBQUFBQUFBQUFCSUVuQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFFZ1NjQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFTQkp3QVFBQUFBQUFBQUFBQUFBQUFBQUFBQUJJRW5BQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUVnU2NBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQVNCSndBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQklFbkFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBRWdTY0FFQUFBQUFBQUFBQUFBQUFBQUFBQUFBU0JKd0FRQUFBQUFBQUFBQUFBQUFBQUFBQUFCSUVuQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFFZ1NjQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFTQkp3QVFBQUFBQUFBQUFBQUFBQUFBQUFBQUJJRW5BQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUVnU2NBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQVNCSndBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQklFbkFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBRWdTY0FFQUFBQUFBQUFBQUFBQUFBQUFBQUFBU0JKd0FRQUFBQUFBQUFBQUFBQUFBQUFBQUFCSUVuQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFFZ1NjQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFTQkp3QVFBQUFBQUFBQUFBQUFBQUFBQUFBQUJJRW5BQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUVnU2NBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQVNCSndBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQklFbkFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBRWdTY0FFQUFBQUFBQUFBQUFBQUFBQUFBQUFBU0JKd0FRQUFBQUFBQUFBQUFBQUFBQUFBQUFCSUVuQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFFZ1NjQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFTQkp3QVFBQUFBQUFBQUFBQUFBQUFBQUFBQUJJRW5BQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUVnU2NBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQVNCSndBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQklFbkFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBRWdTY0FFQUFBQUFBQUFBQUFBQUFBQUFBQUFBU0JKd0FRQUFBQUFBQUFBQUFBQUFBQUFBQUFCSUVuQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFFZ1NjQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFTQkp3QVFBQUFBQUFBQUFBQUFBQUFBQUFBQUJJRW5BQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUVnU2NBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQVNCSndBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQklFbkFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBRWdTY0FFQUFBQUFBQUFBQUFBQUFBQUFBQUFBU0JKd0FRQUFBQUFBQUFBQUFBQUFBQUFBQUFCSUVuQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFFZ1NjQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFTQkp3QVFBQUFBQUFBQUFBQUFBQUFBQUFBQUJJRW5BQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUVnU2NBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQVNCSndBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQklFbkFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBRWdTY0FFQUFBQUFBQUFBQUFBQUFBQUFBQUFBU0JKd0FRQUFBQUFBQUFBQUFBQUFBQUFBQUFCSUVuQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFFajZ3d1FzNlM5Ly85ZHNCUUFBWUlOTzM3Nk8xUXlQYlpqcWVQNUhXQUlBQUFBQTJ2bjJkZnlIRlhocG1LcS9Cd0lBQUxmWlQ4L1B6LzREQVEvbHk1Y3ZtL3ozOHZkd0FBRFF6ZW5mLy95cjd4VFJoWUFMU3lzbUFBQUFObnFyK0xEbDhZVzdFd0FBQUFEYUdxWWEzNzZPZjdNRUx4UVRBQUJBOTl0TVlCTmcvK0kzbjdzQUFFQVBsLy92OXAwaXV2amRCQUFBQUFBQUFBQUF3QS94NDlkL0FRQUFXUEUyTXdIQTdoVVRBQUFBN0l1QUN3QUFBQUFBQUFBQThOSkp4QVVBQUdCVllRS0EvZkxaR3dBQXdENEp1QUFBQUFBQUFBQUFBTDhTY1FFQUFGalIrU2FiclFDd1cyRUNBQUNBL1JGd0FRQUFBQUFBQUFBQTNuSXlBUUFBd0dyQ0JBQzdWVXdBQUFDd1B3SXVBQUFBQUFBQUFBREFtNGFwUGxrQkFBQmdGV0VDZ1AwWnBqcGFBUUFBWUo4RVhBQUFBQUFBQUFBQWdQZkVNTlhaREFBQUFQMjV4d0IyS1V3QUFBQ3dUd0l1QUFBQUFBQUFBQURBUjRwZkJnWUFBRmhGbUFCZ2Q0b0pBQUFBOWtuQUJRQUFBQUFBQUFBQStFd3hBUUFBUUhkaEFvRDlFRWtHQUFEWU53RVhBQUFBQUFBQUFBRGdNekZNZFRZREFBQkFYMjR4Z0YwSkV3QUFBT3lYZ0FzQUFBQUFBQUFBQUhDTjRsZUNBUUFBdWdzVEFPeEdNUUVBQU1CK0NiZ0FBQUFBQUFBQUFBRFhLaVlBQUFEb0trd0E4UGlFa1FFQUFQWlB3QVVBQUFBQUFBQUFBTGhXK0xJSkFBQkFYK2M3YkxZQ3dNTUxFd0FBQU95YmdBc0FBQUFBQUFBQUFIQ0xZZ0lBQUlDdXdnUUFENitZQUFBQVlOOEVYQUFBQUFBQUFBQUFnRnVFWDM4SEFBRG9lNGVaQU9CeERWTWRyUUFBQUxCL0FpNEFBQUFBQUFBQUFNQ3RpZ2tBQUFENkVkSUVlR2hoQWdBQWdQMFRjQUVBQUFBQUFBQUFBRzdteTRNQUFBQmRoUWtBSGxZeEFRQUF3UDRKdUFBQUFBQUFBQUFBQUJuRkJBQUFBTjJFQ1FBZXp6RFYwUW9BQUFESElPQUNBQUFBQUFBQUFBQ2tERk9kclFBQUFPQUdBK0JkWVFJQUFJQmpFSEFCQUFBQUFBQUFBQUN5aWdrQUFBRGNZQUI0ZGdNQUFCeWRnQXNBQUFBQUFBQUFBSkRtRitBQkFBQzYzbUNqRlFBOHN3RUFBTmdlQVJjQUFBQUFBQUFBQU9BZXhRUUFBQURkaEFrQUhrWXhBUUFBd0hFSXVBQUFBQUFBQUFBQUFIY1pwanBiQVFBQW9JdGlBb0NIRVNZQUFBQTREZ0VYQUFBQUFBQUFBQURnWHNVRUFBQUFmUXhUSGEwQXNQbG50ZUF4QUFEQXdRaTRBQUFBQUFBQUFBQUFkL09sRkFBQWdHN0NCQUNlMVFBQUFHeUxnQXNBQUFBQUFBQUFBTENFWWdJQUFBRDNGd0RmaFFrQUFBQ09SY0FGQUFBQUFBQUFBQUJZeEREVjJRb0FBQUJkN3EvUkNnQ2JmVWI3akF3QUFPQ0FCRndBQUFBQUFBQUFBSUNsaEFrQUFBRGNYd0NlMFFBQUFCeU5nQXNBQUFBQUFBQUFBTENVOEN2d0FBQUFYUlFUQUd4V21BQUFBT0I0QkZ3QUFBQUFBQUFBQUlBbEZSTUFBQUMwSjZBSnNNbG44MndGQUFDQVl4SndBUUFBQUFBQUFBQUFsaFFtQUFBQWNIOEJlRFlEQUFCd0pBSXVBQUFBQUFBQUFBREFvdnpTTUFBQVFCZkZCQUNiRXlZQUFBQTRKZ0VYQUFBQUFBQUFBQUJnYWNVRUFBQUE3UTFUSGEwQXNKbG5zcWd4QUFEQWdRbTRBQUFBQUFBQUFBQUFpL09GRlFBQWdDN0NCQUNleVFBQUFLeFB3QVVBQUFBQUFBQUFBR2doVEFBQUFOQmNNUUhBWm9RSkFBQUFqa3ZBQlFBQUFBQUFBQUFBYUNGTUFBQUEwTjR3MWRFS0FLcy9pMmNyQUFBQUhKdUFDd0FBQUFBQUFBQUEwSVF2cmdBQUFIUVJKZ0R3TEFZQUFHQmRBaTRBQUFBQUFBQUFBRUFyeFFRQUFBQnVMNEFEQ0JNQUFBQWNtNEFMQUFBQUFBQUFBQURRekREVjBRb0FBQUJ1TDRBZFA0Tm5Ld0FBQUNEZ0FnQUFBQUFBQUFBQXRCUW1BQUFBY0hzQmVBWURBQUN3WndJdUFBQUFBQUFBQUFCQVM4VUVBQUFBYmkrQUhRc1RBQUFBSU9BQ0FBQUFBQUFBQUFBME5VeDF0Z0lBQUVEejIydTBBa0QzWjYvUHZRQUFBUGhPd0FVQUFBQUFBQUFBQUdndFRBQUFBT0QyQXZEc0JRQUFZSzhFWEFBQUFBQUFBQUFBZ05iQ0JBQUFBTTBWRXdCMEZ5WUFBQURnUXNBRkFBQUFBQUFBQUFCb2JwanFiQVVBQUlEbXQ5ZG9CWUJ1ejF5ZmR3RUFBUENUZ0FzQUFBQUFBQUFBQU5CRG1BQUFBTUR0QmVDWkN3QUF3QjRKdUFBQUFBQUFBQUFBQUQyRUNRQUFBSm9ySmdEb0prd0FBQURBL3dpNEFBQUFBQUFBQUFBQVhReFRuYTBBQUFEUS9QWWFyUURRL0ZucmN5NEFBQUQrajRBTEFBQUFBQUFBQUFEUVM1Z0FBQURBN1FYZ1dRc0FBTURlQ0xnQUFBQUFBQUFBQUFDOWhBa0FBQUNhS3lZQWFDNU1BQUFBd0VzQ0xnQUFBQUFBQUFBQVFEZkRWR2NyQUFBQU5MKzlSaXNBTkh2Rytud0xBQUNBVndSY0FBQUFBQUFBQUFDQW5zSUVBQUFBYmk4QXoxZ0FBQUQyUk1BRkFBQUFBQUFBQUFEb0tVd0FBQURRWERFQlFETmhBZ0FBQUg0bDRBSUFBQUFBQUFBQUFIUTFUSFcyQWdBQVFQUGJhN1FDd09MUFZwOXJBUUFBOENZQkZ3QUFBQUFBQUFBQW9MY3dBUUFBZ05zTHdMTVZBQUNBdlJCd0FRQUFBQUFBQUFBQWVnc1RBQUFBTkZkTUFMQzRNQUVBQUFCdkVYQUJBQUFBQUFBQUFBQzZHNlk2V3dFQUFLRDU3VFZhQVdDeFo2clBzd0FBQUhpWGdBc0FBQUFBQUFBQUFBQUFBTUEraFFrQVBGTUJBQUJvVDhBRkFBQUFBQUFBQUFCWVF6RUJBQUNBMnd2Z2dZUUpBQUFBZUkrQUN3QUFBQUFBQUFBQXNJcGhxcU1WQUFBQTNGNEFEL0FzbmEwQUFBREFSd1JjQUFBQUFBQUFBQUNBdFlRSkFBQUFtaXNtQUxoYm1BQUFBSUNQQ0xnQUFBQUFBQUFBQUFCcktTWUFBQUJvTGt3QTRGa0tBQUJBV3dJdUFBQUFBQUFBQUFBQUFBQUFPelpNZGJZQ2dHY29BQUFBN1FpNEFBQUFBQUFBQUFBQXEvRUZHQUFBZ0M3Q0JBQnB4UVFBQUFCOFJzQUZBQUFBQUFBQUFBQllVNWdBQUFEQTdRV3dSY05VUnlzQUFBQndEUUVYQUFBQUFBQUFBQUJnVFdFQ0FBQ0E5b2FwemxZQXVGbVlBQUFBZ0dzSXVBQUFBQUFBQUFBQUFLdnlTOFlBQUFCZGhBa0FibFpNQUFBQXdEVUVYQUFBQUFBQUFBQUFnTFdGQ1FBQUFOeGVBRnNpT2d3QUFNQXRCRndBQUFBQUFBQUFBSUMxRlJNQUFBQzBOMHgxdGdMQTFjSUVBQUFBWEV2QUJRQUFBQUFBQUFBQUFBQUE0QmpDQkFCWEt5WUFBQURnV2dJdUFBQUFBQUFBQUFEQTZ2d0tQQUFBUUJkaEFvRFBEVk1kclFBQUFNQXRCRndBQUFBQUFBQUFBQUFBQUFBT1FrQVQ0Q3BoQWdBQUFHNGg0QUlBQUFBQUFBQUFBR3hCTVFFQUFFQVhZUUtBVHhVVEFBQUFjQXNCRndBQUFBQUFBQUFBQUFBQWdPTUlFd0M4YjVqcWFBVUFBQUJ1SmVBQ0FBQUFBQUFBQUFCc3dqRFYyUW9BQUFEdUw0Q1ZoUWtBQUFDNGxZQUxBQUFBQUFBQUFBQ3dGV0VDQUFBQTl4ZkF5b29KQUFBQXVKV0FDd0FBQUFBQUFBQUFzQlZoQWdBQUFQY1h3RnFHcVk1V0FBQUFJRVBBQlFBQUFBQUFBQUFBMkF4ZmtnRUFBT2gyZjgxV0FIZ2xUQUFBQUVDR2dBc0FBQUFBQUFBQUFMQWxZUUlBQUFEM0Y4QktpZ2tBQUFESUVIQUJBQUFBQUFBQUFBQzJKRXdBQUFEZy9nTG9iWmpxYUFVQUFBQ3lCRndBQUFBQUFBQUFBSUF0Q1JNQUFBRDBNVXgxdGdMQVQyRUNBQUFBc2dSY0FBQUFBQUFBQUFDQVRmRnJ4d0FBQU4yRUNRQitLaVlBQUFBZ1M4QUZBQUFBQUFBQUFBRFltakFCQUFDQSt3dWdGMEZoQUFBQTdpWGdBZ0FBQUFBQUFBQUFiRTJZQUFBQW9JOWhxck1WQUh3ZUJRQUF3SDBFWEFBQUFBQUFBQUFBZ0swSkV3QUFBTGpCQURvcUpnQUFBT0FlQWk0QUFBQUFBQUFBQUFBQUFBREhGU1lBam15WTZtZ0ZBQUFBN2lYZ0FnQUFBQUFBQUFBQWJNNHcxZGtLQUFBQWJqQ0FEc0lFQUFBQTNFdkFCUUFBQUFBQUFBQUFBQUFBNE5qQ0JNQ0JGUk1BQUFCd0x3RVhBQUFBQUFBQUFBQmdpNG9KQUFBQXVna1RBRWMwVEhXMEF2OWg1dzV1SXdpQktBcUdRaWpUSVpFQnBOYVorV1RMa20xNUQ0QllxQXJoSFZwaXBQa0FBQUFqR0hBQkFBQUFBQUFBQUFBQUFBQzRYS25aVkFBdUZCSUFBQUF3Z2dFWEFBQUFBQUFBQUFCZ1MzNGVCQUFBV0Nva0FDN1VKUUFBQUdBRUF5NEFBQUFBQUFBQUFBQUFBQUNFQk1CTlNzMUhCUUFBQUVZeDRBSUFBQUFBQUFBQUFPd3FKQUFBQUZpbjFHd3FBQmNKQ1FBQUFCakZnQXNBQUFBQUFBQUFBTENya0FBQUFNQTdER0NTTGdFQUFBQ2pHSEFCQUFBQUFBQUFBQUMyVldvK0tnQUFBQ3dURWdBMzhNMEpBQUNBMFF5NEFBQUFBQUFBQUFBQU93c0pBQUFBMWlrMW13ckFCVUlDQUFBQVJqTGdBZ0FBQUFBQUFBQUFBQUFBd0tlUUFMaEFsd0FBQUlDUkRMZ0FBQUFBQUFBQUFBQTc2eElBQUFBc0ZSSUFKeXMxSHhVQUFBQVl6WUFMQUFBQUFBQUFBQUFBQUFBQVgwck5wZ0p3c0pBQUFBQ0EwUXk0QUFBQUFBQUFBQUFBVy9QaklBQUF3SEloQVhDd0xnRUFBQUNqR1hBQkFBQUFBQUFBQUFBQUFBRGd1NUFBT0ZHcCthZ0FBQURBREFaY0FBQUFBQUFBQUFDQTNZVUVBQUFBYTVXYVRRWGdRQ0VCQUFBQU14aHdBUUFBQUFBQUFBQUFkaGNTQUFBQUxOY2xBTncyQUFBQWVJMEJGd0FBQUFBQUFBQUFBQUFBQUg0b05SOFZBRGNOQUFBQS9tZkFCUUFBQUFBQUFBQUEyRjZwMlZRQUFBQllMaVFBRHRJbEFBQUFZQllETGdBQUFBQUFBQUFBQUFBQUFQeW1Td0FjSkNRQUFBQmdGZ011QUFBQUFBQUFBQURBT3dnSkFBQUExaXMxSHhXQUEyNVpVd0VBQUlDWkRMZ0FBQUFBQUFBQUFBRHZJQ1FBQUFEd0hnTnd5d0FBQU5pUkFSY0FBQUFBQUFBQUFBQUFBQUQrMGlVQURoQVNBQUFBTU5PSEFPemMwWkViTnhhRzBWcVY4OEJHWWlBa2JBUU5SdUFPaVhBazdraTBYbXRka3FYUkRPY095VzZnejNueCsxY1hVMnlYNmpmZ0FnQUFBQUFBQUFBQURDSFZ2cWdBQUFDd3kvZFlWZ0VZK0crWS82Y0VBQURBd3hsd0FRQUFBQUFBQUFBQUFBQUE0RFZGQXNEZk1BQUFBUGc1QXk0QUFBQUFBQUFBQUFBQUFBQzhwa2tBREt4SUFBQUF3S01aY0FFQUFBQUFBQUFBQUViUkpBQUFBTmhIcWoyckFBejR0MnRSQVFBQWdHY3c0QUlBQUFBQUFBQUFBQUFBQU1CYmlnUUFBQUFBOExKL2ZmNzhXUVVBQUFBQUFBQUFBQUFBQUFBQUFBQUFnSUJQRWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBeEJod0FRQUFBQUFBQUFBQUFBQUFBQUFBQUFBSU11QUNBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQmt3QVVBQUFBQUFBQUFBQUFBQUFBQUFBQUFJTWlBQ3dBQUFBQUFBQUFBQUFBQUFBQUFBQUJBa0FFWEFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBZ0F5NEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFRUdYQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnZ3k0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFR1hBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFneTRBSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVHVEFCUUFBQUFBQUFBQUFBQUFBQUFBQUFBQWd5SUFMQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUNRQVJjQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0NBRExnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFRWmNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0NETGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFaY0FFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0RMZ0FnQUFBQUFBQUFBQUFBQUFBQUFBQUFBUVpNQUZBQUFBQUFBQUFBQUFBQUFBQUFBQUFDRElnQXNBQUFBQUFBQUFBQUFBQUFBQUFBQUFRSkFCRndBQUFBQUFBQUFBQUFBQUFBQUFBQUNBSUFNdUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQkJsd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFJSU11QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQmx3QVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJTXVBQ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUJCa3dBVUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlNaUFDd0FBQUFBQUFBQUFBQUFBQUFBQUFBQkFrQUVYQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFnQXk0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVFR1hBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdneTRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVHWEFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWd5NEFJQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUdUQUJRQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ3lJQUxBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQ1FBUmNBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQ0FETGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUVFaY0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQ0RMZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUVpjQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFDRExnQWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFRWk1BRkFBQUFBQUFBQUFBQUFBQUFBQUFBQUNESWdBc0FBQUFBQUFBQUFBQUFBQUFBQUFBQVFKQUJGd0FBQUFBQUFBQUFBQUFBQUFBQUFBQ0FJQU11QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJCQmx3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlJTXVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJCbHdBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlNdUFDQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkJrd0FVQUFBQUFBQUFBQUFBQUFBQUFBQUFBSU1pQUN3QUFBQUFBQUFBQUFBQUFBQUFBQUFCQWtBRVhBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQWdBeTRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUVHWEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ2d5NEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUdYQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ3k0QUlBQUFBQUFBQUFBQUFBQUFBQUFBQUFFR1RBQlFBQUFBQUFBQUFBQUFBQUFBQUFBQUFneUlBTEFBQUFBQUFBQUFBQUFBQUFBQUFBQUVDUUFSY0FBQUFBQUFBQUFBQUFBQUFBQUFBQWdDQURMZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFRUVpjQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNDRExnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFRWmNBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNETGdBZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQVFaTUFGQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0RJZ0FzQUFBQUFBQUFBQUFBQUFBQUFBQUFBUUpBQkZ3QUFBQUFBQUFBQUFBQUFBQUFBQUFDQUlBTXVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkJCbHdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUlNdUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkJsd0FRQUFBQUFBQUFBQUFBQUFBQUFBQUFBSU11QUNBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQmt3QVVBQUFBQUFBQUFBQUFBQUFBQUFBQUFJTWlBQ3dBQUFBQUFBQUFBQUFBQUFBQUFBQUJBa0FFWEFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBZ0F5NEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFRUdYQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnZ3k0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFR1hBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFneTRBSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVHVEFCUUFBQUFBQUFBQUFBQUFBQUFBQUFBQWd5SUFMQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUNRQVJjQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0NBRExnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFRWmNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0NETGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFaY0FFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0RMZ0FnQUFBQUFBQUFBQUFBQUFBQUFBQUFBUVpNQUZBQUFBQUFBQUFBQUFBQUFBQUFBQUFDRElnQXNBQUFBQUFBQUFBQUFBQUFBQUFBQUFRSkFCRndBQUFBQUFBQUFBQUFBQUFBQUFBQUNBSUFNdUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQkJsd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFJSU11QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQmx3QVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJTXVBQ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUJCa3dBVUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlNaUFDd0FBQUFBQUFBQUFBQUFBQUFBQUFBQkFrQUVYQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFnQXk0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVFR1hBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdneTRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVHWEFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWo2UlFLQTgvajNmMzVmVkFCNHV1c2Z2LzNhWlFBQWZIY0M4S2p2em0zTnZqc0I3aURWbnYvOFQxRUN3RzlsQUw5akFRREc4K2MzNEVVRjJQMzd4TDhiQVFENHpoKy8vZXBiQmVCRURMZ0FuRXVUQUdDWHY3MytjVEFBNExzVEFOK2RBTWRYL0tZRjhGc1p3TzlZQUlBeHBkcU51TUMrYnpEN05nRUFlSkh2RklBVCtTUUJBQUFBQUFBQUFBQUFBQUFBQXlzU2dEY0lBQUFBZXpMZ0FnQUFBQUFBQUFBQUFBQUF3TWlLQkxDckpnRUFBQUJuWjhBRkFBQUFBQUFBQUFBQUFBQ0FvYVhhRnhYQTJ3TUFBSUM5R0hBQkFBQUFBQUFBQUFBQUFBQmdkRTBDMkVXUkFBQUFBQXk0QUFBQUFBQUFBQUFBQUFBQU1JRlVlMVlCbnE1SUFBQUFBQVpjQUFBQUFBQUFBQUFBQUFBQW1FT1JBSjRuMWI2b0FBQUFBRjhZY0FFQUFBQUFBQUFBQUFBQUFHQUdUUUo0cWlJQkFBQUFmR0hBQlFBQUFBQUFBQUFBQUFBQWdDbWsyck1LOExTM1ZwUUFBQUNBTHd5NEFBQUFBQUFBQUFBQUFBQUFNSXNtQVR4RmtRQUFBQUMrTXVBQ0FBQUFBQUFBQUFBQUFBREFMSW9FOEJSTkFnQUFBUGpLZ0FzQUFBQUFBQUFBQUFBQUFBRFRTTFV2S3NCRDMxaFdBUUFBQVA3SmdBc0FBQUFBQUFBQUFBQUFBQUF6S1JLQU53WUFBQURQWk1BRkFBQUFBQUFBQUFDWXlyYm1pd29BQUFDblZpU0FoMm9TQUFBQXdEOFpjQUVBQUFBQUFBQUFBQUFBQUdBcXFmWkZCZkMyQUFBQTRGa011QUFBQUFBQUFBQUFBQUFBQURDYkpnRThSSkVBQUFBQWZtVEFCUUFBQUFBQUFBQUFBQUFBZ09tazJyTUtjSGRGQWdBQUFQaVJBUmNBQUFBQUFBQUFBQUFBQUFCbVZDU0ErMG0xTHlvQUFBREF5d3k0QUFBQUFBQUFBQUFBQUFBQU1LTW1BZHhWa1FBQUFBQmVac0FGQUFBQUFBQUFBQUNZeVZVQ0FBQUEvcFpxenlyQTNkNVNVUUlBQUFCZVpzQUZBQUFBQUFBQUFBQ1l5VlVDQUFBQXZ0RWtnTHNvRWdBQUFNRFBHWEFCQUFBQUFBQUFBQUFBQUFCZ1ZrVUN1SXNtQVFBQUFQeWNBUmNBQUFBQUFBQUFBQUFBQUFDbWxXcGZWSUFQdmFHc0FnQUFBTHpPZ0FzQUFBQUFBQUFBQUFBQUFBQXpLeEtBTndRQUFBQ1BaTUFGQUFBQUFBQUFBQUFBQUFDQW1SVUo0RU9hQkFBQUFQQTZBeTRBQUFBQUFBQUFBTUEwdGpWZlZBQUFBT0I3cWZaRkJmQjJBQUFBNEZFTXVBQUFBQUFBQUFBQUFBQUFBREM3SmdHRUZBa0FBQURnYlFaY0FBQUFBQUFBQUFBQUFBQUFtRjZxUGFzQTcxWWtBQUFBZ0xjWmNBRUFBQUFBQUFBQUFBQUFBT0FNaWdSd3UxVDdvZ0lBQUFEY3hvQUxBQUFBQUFBQUFBQXdpeVlCQUFBQXZodmhib29FQUFBQWNCc0RMZ0FBQUFBQUFBQUFBQUFBQUp4Q3FqMnJBRGUvbGFJRUFBQUEzTWFBQ3dBQUFBQUFBQUFBQUFBQUFHZlJKSUNiRkFrQUFBRGdkZ1pjQUFBQUFBQUFBQUFBQUFBQU9Jc2lBZHlrU1FBQUFBQzNNK0FDQUFBQUFBQUFBQUJNWVZ2elJRVUFBQURla21wZlZJQlgzMGhXQVFBQUFON0hnQXNBQUFBQUFBQUFBQUFBQUFCblVpU0FWelVKQUFBQTRIME11QUFBQUFBQUFBQUFBQUFBQUhBbVJRTHdSZ0FBQU9DZURMZ0FBQUFBQUFBQUFBQXp1RW9BQUFEQXJWTHRpd3JnYlFBQUFNQzlHSEFCQUFBQUFBQUFBQUJtY0pVQUFBQ0FkMmdTd0l1S0JBQUFBUEIrQmx3QUFBQUFBQUFBQUFBQUFBQTRuVlI3VmdGK1VDUUFBQUNBOXpQZ0FnQUFBQUFBQUFBQUFBQUF3QmtWQ2VDclZQdWlBZ0FBQU1RWWNBRUFBQUFBQUFBQUFJYTNyZm1pQWdBQUFPL1VKQUJ2QWdBQUFPN0JnQXNBQUFBQUFBQUFBQUFBQUFDbmxHclBLb0MzQUFBQUFCOWx3QVVBQUFBQUFBQUFBQUFBQUlDemFoTEFYNG9FQUFBQUVHZkFCUUFBQUFBQUFBQUFHRjJUQUFBQWdLQWlBZnlsU1FBQUFBQnhCbHdBQUFBQUFBQUFBQUFBQUFBNHJWVDdvZ0luZndOWkJRQUFBUGdZQXk0QUFBQUFBQUFBQUFBQUFBQ2NXWkdBazJzU0FBQUF3TWNZY0FFQUFBQUFBQUFBQUlhMnJmbWlBZ0FBQUI5UUpNQWJBQUFBQUQ3Q2dBc0FBQUFBQUFBQUFBQUFBQUNubG1wZlZNRHRBd0FBQUZFR1hBQUFBQUFBQUFBQUFBQUFBRGk3SmdFblZTUUFBQUNBanpQZ0FnQUFBQUFBQUFBQWpLeEpBQUFBd0QyazJyTUtuRkNSQUFBQUFEN09nQXNBQUFBQUFBQUFBQUFBQUFBWXN1QmtVdTJMQ2dBQUFIQWZCbHdBQUFBQUFBQUFBSUNSWFNVQUFBRGdUcG9FdUhrQUFBQWd3b0FMQUFBQUFBQUFBQUF3ckczTlhRVUFBQUR1SmRXZVZjQ3RBd0FBQU85bHdBVUFBQUFBQUFBQUFBQUFBQUMrYUJKd0VrVUNBQUFBdUI4RExnQUFBQUFBQUFBQXdLaWFCQUFBQU54WmtZQ1RhQklBQUFEQS9SaHdBUUFBQUFBQUFBQUFBQUFBZ1A5THRTOHFNUG1OWnhVQUFBRGd2Z3k0QUFBQUFBQUFBQUFBbzdwS0FBQUF3QU1VQ1poY2t3QUFBQUR1eTRBTEFBQUFBQUFBQUFBd3BHM05YUVVBQUFBZW9FaUFHd2NBQUFEZXc0QUxBQUFBQUFBQUFBQUFBQUFBZkNQVnZxaUEyd1lBQUFCdVpjQUZBQUFBQUFBQUFBQVlVWk1BQUFBQTM1M3dia1VDQUFBQXVEOERMZ0FBQUFBQUFBQUFBQUFBQVBDZFZIdFdnUWtWQ1FBQUFPRCtETGdBQUFBQUFBQUFBQUFqdWtvQUFBREFneFVKbUVtcWZWRUJBQUFBSHNPQUN3QUFBQUFBQUFBQU1KeHR6VjBGQUFBQUhxeEpnSnNHQUFBQWJtSEFCUUFBQUFBQUFBQUFHTTFWQWdBQUFKNGgxWjVWd0MwREFBQUFiekhnQWdBQUFBQUFBQUFBak9ZcUFRQUFBRS9TSkdBU1JRSUFBQUI0SEFNdUFBQUFBQUFBQUFBQUFBQUE4TElpQVpOb0VnQUFBTURqR0hBQkFBQUFBQUFBQUFDR3NxMzVvZ0lBQUFEUGttcGZWR0R3Rzg0cUFBQUF3R01aY0FFQUFBQUFBQUFBQUFBQUFJQ2ZLeEl3dUNZQkFBQUFQSllCRndBQUFBQUFBQUFBWUNSTkFnQUFBSjZzU0lBYkJnQUFBRjVqd0FVQUFBQUFBQUFBQUFBQUFBQmVrV3BmVk1EdEFnQUFBRDlqd0FVQUFBQUFBQUFBQUJqR3R1YUxDZ0FBQU95Z1NjQ2dpZ1FBQUFEd2VBWmNBQUFBQUFBQUFBQUFBQUFBNEEycDlxd0NBOTVzVVFJQUFBQWV6NEFMQUFBQUFBQUFBQUF3aWlZQkFBQUFPeW9TNEdZQkFBQ0FseGh3QVFBQUFBQUFBQUFBQUFBQWdMYzFDWEN6QUFBQXdFc011QUFBQUFBQUFBQUFBRVBZMW54UkFRQUFnRDJsMnJNS3VGVUFBQURnZXdaY0FBQUFBQUFBQUFBQUFBQUE0RFpOQWdaUkpBQUFBSURuTWVBQ0FBQUFBQUFBQUFDTW9Fa0FBQURBQVJRSkdFU1RBQUFBQUo3SGdBc0FBQUFBQUFBQUFBQUFBQURjS05XK3FJQWJCUUFBQUw1bHdBVUFBQUFBQUFBQUFEaThiYzBYRlFBQUFEaUlJZ0Z1RkFBQUFQaVdBUmNBQUFBQUFBQUFBQUFBQUFDNFhaRUFOd29BQUFCOHk0QUxBQUFBQUFBQUFBQndkRTBDQUFBQWppVFZ2cWlBMndRQUFBRCtac0FGQUFBQUFBQUFBQUFBQUFBQTNxZEp3RUVWQ1FBQUFPRDVETGdBQUFBQUFBQUFBQUNIdHEzNW9nSUFBQUJIazJyUEtuREFteXhLQUFBQXdQTVpjQUVBQUFBQUFBQUFBQUFBQUlEM0t4TGdKZ0VBQUlEL01lQUNBQUFBQUFBQUFBQWNXWk1BQUFBQTM2emdKZ0VBQU9ESURMZ0FBQUFBQUFBQUFBQkhkcFVBQUFDQW8wcTFaeFZ3aXdBQUFJQUJGd0FBQUFBQUFBQUE0TEMyTlhjVkFBQUFPTEFtQVFkUkpBQUFBSUQ5R0hBQkFBQUFBQUFBQUFDTzZpb0JBQUFBQjFjazRDQ2FCQUFBQUxBZkF5NEFBQUFBQUFBQUFNQlJYU1VBQUFEZzZGTHRpd3E0UVFBQUFEZzNBeTRBQUFBQUFBQUFBTUFoYld1K3FBQUFBTUFBaWdTNFFRQUFBRGczQXk0QUFBQUFBQUFBQUFBQUFBQVFWeVRBRFFJQUFNQzUvU0lCQUFBQUFBREF1Rkx0SWdBQU1Lc21nVzhPQUFDQWdiNmZsbTNORnlYWTQvWlVBQUFBZ1AxOWtnQUFBQUFBQUFBQUFEaWdxd1FBQUFBTXBFbkFUb29FQUFBQXNEOERMZ0FBQUFBQUFBQUF3T0ZzYSs0cUFBQUFNSkpVZTFhQkhXNnVLQUVBQUFEN00rQUNBQUFBQUFBQUFBQWN6VlVDQUFBQUJsUWt3TTBCQUFEQU9SbHdBUUFBQUFBQUFBQUFqdVlxQVFBQUFBTnFFdURtQUFBQTRKd011QUFBQUFBQUFBQUFBSWV5cmZtaUFnQUFBQ05LdFdjVmNHc0FBQUJ3UGdaY0FBQUFBQUFBQUFDQUk3bEtBQUFBd01DYUJEeEprUUFBQUFDT3c0QUxBQUFBQUFBQUFBQndKRmNKQUFBQUdGaVJnQ2RwRWdBQUFNQnhHSEFCQUFBQUFBQUFBQUNPNUNvQkFBQUFJMHUxTHlyZ3hnQUFBT0JjRExnQUFBQUFBQUFBQUFDSHNhMjVxd0FBQU1EZ2lnUzRNUUFBQURnWEF5NEFBQUFBQUFBQUFNQlJOQWtBQUFDWVFKRUFOd1lBQUFEbllzQUZBQUFBQUFBQUFBQTRpcXNFQUFBQXpDRFZ2cWlBMndJQUFJRHpNT0FDQUFBQUFBQUFBQUFjd3JibXJnSUFBQUNUYUJMd0lFVUNBQUFBT0I0RExnQUFBQUFBQUFBQXdCRTBDUUFBQUpoSnFqMnJ3QU51cWlnQkFBQUF4MlBBQlFBQUFBQUFBQUFBT0lLckJBQUFBRXltU0lDYkFnQUFnSE13NEFJQUFBQUFBQUFBQU94dVczTlhBUUFBZ01rMENYQlRBQUFBY0E0R1hBQUFBQUFBQUFBQWdMMDFDUUFBQUpoUnFqMnJnRnNDQUFDQStSbHdBUUFBQUFBQUFBQUE5bmFWQUFBQWdFazFDWEJMQUFBQU1EOERMZ0FBQUFBQUFBQUF3SzYyTlhjVkFBQUFtRlNSQUxjRUFBQUE4elBnQWdBQUFBQUFBQUFBN0tsSkFBQUF3TXhTN1lzS3VDRUFBQUNZbXdFWEFBQUFBQUFBQUFCZ1QxY0pBQUFBbUZ5UkFEY0VBQUFBY3pQZ0FnQUFBQUFBQUFBQTdHWmJjMWNCQUFDQS83SjNOMFp1RzNjWWh5bU4rb0FyQ2ZZNmdpdmdzZ0t6Skt3ck1TdFJlTmJGc1VTSlBQNFBIN3ZBODh4d0pySHVBM2loWVFCRjkvUEdKUlBnOXhBQUFBQnNtNEFMQUFBQUFBQUFBQUN3bG13Q0FBQUE5cUFieXRFSytMMERBQUFBMi9YcDY5ZXZWZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFDUGhzQWdBQUFBQUFBQUFBQUFBQUFBQUFBQUNBR0FFWEFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBZ0FSY0FBQUFBQUFBQUFBQUFBQUFBQUFBQWdDQUJGd0FBQUFBQUFBQUFBQUFBQUFBQUFBQ0FJQUVYQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFnQVJjQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0NBQkZ3QUFBQUFBQUFBQUFBQUFBQUFBQUFDQUlBRVhBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQWdBUmNBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQ0FCRndBQUFBQUFBQUFBQUFBQUFBQUFBQUNBSUFFWEFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBZ0FSY0FBQUFBQUFBQUFBQUFBQUFBQUFBQWdDQUJGd0FBQUFBQUFBQUFBQUFBQUFBQUFBQ0FJQUVYQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFnQVJjQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0NBQkZ3QUFBQUFBQUFBQUFBQUFBQUFBQUFDQUlBRVhBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQWdBUmNBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQ0FCRndBQUFBQUFBQUFBQUFBQUFBQUFBQUNBSUFFWEFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBZ0FSY0FBQUFBQUFBQUFBQUFBQUFBQUFBQWdDQUJGd0FBQUFBQUFBQUFBQUFBQUFBQUFBQ0FJQUVYQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFnQVJjQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0NBQkZ3QUFBQUFBQUFBQUFBQUFBQUFBQUFDQUlBRVhBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQWdBUmNBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQ0FCRndBQUFBQUFBQUFBQUFBQUFBQUFBQUNBSUFFWEFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBZ0FSY0FBQUFBQUFBQUFBQUFBQUFBQUFBQWdDQUJGd0FBQUFBQUFBQUFBQUFBQUFBQUFBQ0FJQUVYQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFnQVJjQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0NBQkZ3QUFBQUFBQUFBQUFBQUFBQUFBQUFDQUlBRVhBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQWdBUmNBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQ0FCRndBQUFBQUFBQUFBQUFBQUFBQUFBQUNBSUFFWEFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBZ0FSY0FBQUFBQUFBQUFBQUFBQUFBQUFBQWdDQUJGd0FBQUFBQUFBQUFBQUFBQUFBQUFBQ0FJQUVYQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFnQVJjQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0NBQkZ3QUFBQUFBQUFBQUFBQUFBQUFBQUFDQUlBRVhBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQWdBUmNBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQ0FCRndBQUFBQUFBQUFBQUFBQUFBQUFBQUNBSUFFWEFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBZ0FSY0FBQUFBQUFBQUFBQUFBQUFBQUFBQWdDQUJGd0FBQUFBQUFBQUFBQUFBQUFBQUFBQ0FJQUVYQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFnQVJjQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0NBQkZ3QUFBQUFBQUFBQUFBQUFBQUFBQUFDQUlBRVhBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQWdBUmNBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQ0FCRndBQUFBQUFBQUFBQUFBQUFBQUFBQUNBSUFFWEFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBZ0FSY0FBQUFBQUFBQUFBQUFBQUFBQUFBQWdDQUJGd0FBQUFBQUFBQUFBQUFBQUFBQUFBQ0FJQUVYQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFnQVJjQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0NBQkZ3QUFBQUFBQUFBQUFBQUFBQUFBQUFDQUlBRVhBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQWdBUmNBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQ0FCRndBQUFBQUFBQUFBQUFBQUFBQUFBQUNBSUFFWEFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBZ0FSY0FBQUFBQUFBQUFBQUFBQUFBQUFBQWdDQUJGd0FBQUFBQUFBQUFBQUFBQUFBQUFBQ0FJQUVYQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFnQVJjQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0NBQkZ3QUFBQUFBQUFBQUFBQUFBQUFBQUFDQUlBRVhBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQWdBUmNBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQ0FCRndBQUFBQUFBQUFBQUFBQUFBQUFBQUNBSUFFWEFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBZ0FSY0FBQUFBQUFBQUFBQUFBQUFBQUFBQWdDQUJGd0FBQUFBQUFBQUFBQUFBQUFBQUFBQ0FJQUVYQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFnQVJjQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0NBQkZ3QUFBQUFBQUFBQUFBQUFBQUFBQUFDQUlBRVhBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQWdBUmNBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQ0FCRndBQUFBQUFBQUFBQUFBQUFBQUFBQUNBSUFFWEFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBZ0FSY0FBQUFBQUFBQUFBQUFBQUFBQUFBQWdDQUJGd0FBQUFBQUFBQUFBQUFBQUFBQUFBQ0FJQUVYQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFnQVJjQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0NBQkZ3QUFBQUFBQUFBQUFBQUFBQUFBQUFDQUlBRVhBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQWdBUmNBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQ0FCRndBQUFBQUFBQUFBQUFBQUFBQUFBQUNBSUFFWEFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBZ0FSY0FBQUFBQUFBQUFBQUFBQUFBQUFBQWdDQUJGd0FBQUFBQUFBQUFBQUFBQUFBQUFBQ0FJQUVYQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFnQVJjQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0NBQkZ3QUFBQUFBQUFBQUFBQUFBQUFBQUFDQUlBRVhBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQWdBUmNBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQ0FCRndBQUFBQUFBQUFBQUFBQUFBQUFBQUNBSUFFWEFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBZ0FSY0FBQUFBQUFBQUFBQUFBQUFBQUFBQWdDQUJGd0FBQUFBQUFBQUFBQUFBQUFBQUFBQ0FJQUVYQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFnQVJjQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0NBQkZ3QUFBQUFBQUFBQUFBQUFBQUFBQUFDQW9DOG1BTmlQMzM3Lzg2c1ZBQmFYLy9yalB5Y3pBQUNlT3dFQUFJQ1orUDhpQUhic3Q5Ly9QTDcrYjRFbEFBQ1lRTDZjZTMvRzhJTnVLUDR1QkFBQVlYLzk4WjlQVmdEWWo4OG1BQUFBQUFBQUFBQ0FOdm5CS2dBQUFHQWl5UVRmNjRaeXRBSUFBQUR3WGdJdUFBQUFBQUFBQUFEUXBtd0NBQUFBWUNLcEcwcHZodTgzTVFFQUFBRHdYZ0l1QUFBQUFBQUFBQURRb011NVAxa0JBQUFBbUZBeXdUZHZNUnQ3QUFBQUFPOG00QUlBQUFBQUFBQUFBTzBaVFFBQUFBQk1MSnZnSDhrRUFBQUF3RE1FWEFBQUFBQUFBQUFBb0QzWkJBQUFBTURVdXFIMFZ2aGJOZ0VBQUFEd0RBRVhBQUFBQUFBQUFBQm95M2c1OThVTUFBQUF3QXpTM2djUXNRRUFBQUFpQkZ3QUFBQUFBQUFBQUtBdDJRUUFBQURBVExJSlJHd0FBQUNBNXdtNEFBQUFBQUFBQUFCQU84Ykx1UzltQUFBQUFPYlNEZVc0OHdteTN3VUFBQURBc3dSY0FBQUFBQUFBQUFDZ0hka0VBQUFBd016U1hrOWN2QVlBQUFDSUVuQUJBQUFBQUFBQUFJQTJqSmR6WDh3QUFBQUF6Q3c1ZHdBQUFJRG5DTGdBQUFBQUFBQUFBRUFETHVmK3hRb0FBQURBRXJxaEhIZDY2c25WQndBQUFDSUVYQUFBQUFBQUFBQUFvSDdaQkFBQUFNQ0MwdDVPZU1mUkdnQUFBR0FDQWk0QUFBQUFBQUFBQUZDNXk3ay9XUUVBQUFCWVVPcUcwdS90bkYxMkFBQUFJRXJBQlFBQUFBQUFBQUFBNnBaTkFBQUFBS3dnN2VWRTMySTF5U1VIQUFBQW9nUmNBQUFBQUFBQUFBQ2dYdVBsM0ovTUFBQUFBS3dnNytoY2s4c05BQUFBZklTQUN3QUFBQUFBQUFBQTFDdWJBQUFBQUZoTE41UitKNmVhWFcwQUFBRGdJd1JjQUFBQUFBQUFBQUNnVHVQbDNCY3pBQUFBQUN0S1d6L0JIVVZxQUFBQWdCa0p1QUFBQUFBQUFBQUFRSjJ5Q1FBQUFJQ1Y1UjJjWTNLWkFRQUFnSThTY0FFQUFBQUFBQUFBZ1Bya3k3a3ZaZ0FBQUFEVzFnM2x1UEZUeks0eUFBQUE4RkVDTGdBQUFBQUFBQUFBVUpmeGN1NVBaZ0FBQUFBcWtiWjZZanVJMHdBQUFBQUxFWEFCQUFBQUFBQUFBSUM2WkJNQUFBQUFGVW5PRFFBQUFPQStBUmNBQUFBQUFBQUFBS2pIZURuM3hRd0FBQUJBVGJxaEhEZDZhc25WQlFBQUFLWWc0QUlBQUFBQUFBQUFBSlc0blBzWEt3QUFBQUFWU2xzN29RMUhhUUFBQUlBVkNMZ0FBQUFBQUFBQUFFQWRrZ2tBQUFDQVNxVnVLUDNXenNsbEJRQUFBS1lpNEFJQUFBQUFBQUFBQU9zYkwrZSttQUVBQUFDb1dOcktpYnpGYUpKTENnQUFBRXhGd0FVQUFBQUFBQUFBQUZaMk9mY3ZWZ0FBQUFBcWx6ZDBMc25sQkFBQUFLWWs0QUlBQUFBQUFBQUFBT3RLSmdBQUFBQmEwQTJsMzhpcFpGY1RBQUFBbUpLQUN3QUFBQUFBQUFBQXJHZThuUHRpQmdBQUFLQVJxZlVUMkZDRUJnQUFBS2lJZ0FzQUFBQUFBQUFBQUt6a2N1NWZyQUFBQUFBMEpHL2dISkxMQ0FBQUFFeE53QVVBQUFBQUFBQUFBTmFSVEFBQUFBQzBwaHZLc2ZGVHlLNGlBQUFBTURVQkZ3QUFBQUFBQUFBQVdONTRPZmZGREFBQUFFQ0RVcXNIdm9INERBQUFBRkFwQVJjQUFBQUFBQUFBQUZqV2E3emx4UXdBQUFCQW81SmpCd0FBQVBpZWdBc0FBQUFBQUFBQUFDd3Jtd0FBQUFCb1dUZVVZNk9Ibmx3OUFBQUFZQTRDTGdBQUFBQUFBQUFBc0p4ME9mZkZEQUFBQUVEalVtc0gzSEIwQmdBQUFHaUFnQXNBQUFBQUFBQUFBQ3hqRkc4QkFBQUFOaUoxUStsYk8yYVhEUUFBQUppTGdBc0FBQUFBQUFBQUFDemdjdTVmckFBQUFBQnNTSEs4QUFBQUFOOEl1QUFBQUFBQUFBQUF3UHlTQ1FBQUFJQ055YTBjYURlVW84c0ZBQUFBekVuQUJRQUFBQUFBQUFBQTVwVXY1NzZZQVFBQUFOaWFiaWg5STRlYVhTMEFBQUJnVGdJdUFBQUFBQUFBQUFBd24vRnk3azltQUFBQUFEWXExMzZBRFVWbUFBQUFnSVlKdUFBQUFBQUFBQUFBd0R4ZTR5MHZaZ0FBQUFBMkxEbEdBQUFBQUFFWEFBQUFBQUFBQUFDWVN6WUJBQUFBc0hYZFVJNlZIMkoybFFBQUFJQzVDYmdBQUFBQUFBQUFBTUQwMHVYY0Z6TUFBQUFBTzVCcVBiQnVLTDNMQXdBQUFDeEJ3QVVBQUFBQUFBQUFBS1kxaXJjQUFBQUFPNUlxUHJiczhnQUFBQUJMRUhBQkFBQUFBQUFBQUlEcHZNWmJYc3dBQUFBQTdFazNsR09saDVaY0hRQUFBR0FKQWk0QUFBQUFBQUFBQURBUjhSWUFBQUJncDNKdEIxUnhWQVlBQUFEWUlBRVhBQUFBQUFBQUFBQ1lSaklCQUFBQXNGZmRVUHJLRGltNUtnQUFBTUJTQkZ3QUFBQUFBQUFBQU9EajB1WGNGek1BQUFBQU81WWNEd0FBQUxCWEFpNEFBQUFBQUFBQUFQQXhXYndGQUFBQTRKQnJPWkJ1S0VlWEF3QUFBRmlTZ0FzQUFBQUFBQUFBQU1TTmwzTi9NZ01BQUFEQTMrR1V2cEpEeWE0R0FBQUFzQ1FCRndBQUFBQUFBQUFBaUhtTnQ3eVlBUUFBQU9BZmVlMERxQ2dpQXdBQUFPeUlnQXNBQUFBQUFBQUFBQVNJdHdBQUFBRGNTSTRCQUFBQTJDTUJGd0FBQUFBQUFBQUFlRjR5QVFBQUFNQ3RiaWpIbFE4aHV3b0FBQURBMGdSY0FBQUFBQUFBQUFEZ09lbHk3b3NaQUFCZ3QwWVRBTnlWMXZyRzNWQjY4d080ZndVQWdEVUl1QUFBQUFBQUFBQUF3UHVKdHdBQUFLTUpBTzVLSzM3dmJINEE5NjhBQUxBR0FSY0FBQUFBQUFBQUFIaWZVYndGQUFDNE9wa0E0TDV1S01lVnZuV3lQb0Q3VndBQVdJT0FDd0FBQUFBQUFBQUFQUFlhYjNreEF3QUE4TDluQkJNQTNKV1gvb1lyUm1NQXZCOERBQUFDTGdBQUFBQUFBQUFBOElCNEN3QUE4S05zQW9EN3VxSDBDMy9MWkhXQUc2TUpBQUJnR1FJdUFBQUFBQUFBQUFEd2ErSXRBQURBenhRVEFEeVVOdjc5QU55M0FnQUEveEJ3QVFBQUFBQUFBQUNBWDhzbUFBQUFQQzhBMVAwKzJRM2xhRzRBOTZzQUFMQW1BUmNBQUFBQUFBQUFBUGk1ZERuMy91MmtBQURBcjR3bUFMaXZHMHEvMExmSzFnYTRjVElCQUFBc1I4QUZBQUFBQUFBQUFBQnVpYmNBQUFDUGVHWUFlQ3pQL1EwV2pNUUF0R1EwQVFBQUxFdkFCUUFBQUFBQUFBQUF2aWZlQWdBQXZGYzJBY0JkYVNQZkE2QTFvd2tBQUdCWkFpNEFBQUFBQUFBQUFQQi80aTBBQU1BelJoTUEzTmNONVRqenQ4aFdCcmh4TWdFQUFDeEx3QVVBQUFBQUFBQUFBTDRSYndFQUFKN2xHUUxnc1RUWEYrNkcwcHNYNEVZMkFRQUFMRS9BQlFBQUFBQUFBQUFBRG9kUnZBVUFBQWpLSmdDNEsza1BCbGpVYUFJQUFGaWVnQXNBQUFBQUFBQUFBSHYzR205NU1RTUFBQkIwTWdIQWZkMVFqak45NldSZGdCdGk1UUFBc0FJQkZ3QUFBQUFBQUFBQTlreThCUUFBbU9UWndnUUFkK1dwditDTVVSZ0E3N2NBQU1EVEJGd0FBQUFBQUFBQUFOZ3I4UllBQUdDeTV3c1RBTnpYRGFXZitFc21xd0xjT0prQUFBRFdJZUFDQUFBQUFBQUFBTUFlaWJjQUFBQlQ4b095QUkrbHlyOGVRT3RHRXdBQXdIb0VYQUFBQUFBQUFBQUEyQnZ4RmdBQVlKWm5EUk1BM0pXbitrTGRVSTdtQkhBL0NnQUFOUkZ3QVFBQUFBQUFBQUJnVDhSYkFBQ0EyWjQzVEFCd1h6ZVVmcUl2bGF3SmNPTmtBZ0FBV0krQUN3QUFBQUFBQUFBQWV5SGVBZ0FBek1rUHpBSThsai82QmQ0aU1NbVVBTk8rdndJQUFCOGo0QUlBQUFBQUFBQUF3QjZJdHdBQUFJczhlNWdBNEs1VXlkY0FjQjhLQUFCTVNzQUZBQUFBQUFBQUFJQ3RFMjhCQUFBV2UvNHdBY0I5M1ZDT0gvd1MyWW9BTi9lZ3hRd0FBTEF1QVJjQUFBQUFBQUFBQUxaTXZBVUFBRmpTeVFRQUQ2WG9KM1pENmMwSGNHTTBBUUFBckUvQUJRQUFBQUFBQUFDQXJSSnZBUUFBMXBCTkFIQlhXdWx6QWJaS1JCQUFBQ29nNEFJQUFBQUFBQUFBd0JhSnR3QUFBS3M5ajVnQTRMNXVLTWZncDJickFiajNCQUNBR24weEFRQUFBQUFBQUFBQUd5UGVBZ0FBek9iNnZQSG9RMG8zRkVNQjNKZXZyOU16bi9DQjZBdkFwdDlQMzNGL2VuQi9DZ0FBOC90c0FnQUFBQUFBQUFBQU5rUzhCUUFBcUVFMkFjQjkzVkQ2Sno4bFdRM2dlNWR6cjh3Q0FBQ1ZFSEFCQUFBQUFBQUFBR0FyeEZzQUFJQnFuazlNQVBCUW12bmpBYll1bXdBQUFPb2g0QUlBQUFBQUFBQUF3QmFJdHdBQUFOVzRQcDhVS3dBOGxOLzdnZDFRanVZQ3VER2FBQUFBNmlIZ0FnQUFBQUFBQUFCQTY4UmJBQUNBR21VVEFOelhEYVYvNTRjbWF3RjhaeFFOQkFDQXVnaTRBQUFBQUFBQUFBRFFNdkVXQUFDZzJ1Y1ZFd0E4bEI5OXdGdmtKWmtLd0wwbUFBRFVUTUFGQUFBQUFBQUFBSUJXaWJjQUFBRFZ1ajZ2bElNZnJBVjRKRTMwTVFCN3U5YzhXUUVBQU9vaTRBSUFBQUFBQUFBQVFJdkVXd0FBZ0NhZVhVd0FjRjgzbE9PREQ4bFdBbkNQQ1FBQXRSTndBUUFBQUFBQUFBQ2dOZUl0QUFCQUU2N1BMaWNyQUR5VWZ2VUwzVkI2OHdEY3lDWUFBSUQ2Q0xnQUFBQUFBQUFBQU5BUzhSWUFBS0M1NXhnVEFOeVZncjhHc0V1WGMxK3NBQUFBOVJGd0FRQUFBQUFBQUFDZ0ZlSXRBQUJBazg4eUpnQzRyeHZLOFJlL2xLMEQ0SDBSQUFCYUlPQUNBQUFBQUFBQUFFQUxzbmdMQUFEUW91dXp6TWtLQUEvbEgvL0JuYWdMd0o2TkpnQUFnRG9KdUFBQUFBQUFBQUFBVUx2a0J4NEJBSURHalNZQXVLOGJTdi9EUDBwV0Fmaitudkp5N29zWkFBQ2dUZ0l1QUFBQUFBQUFBQURVTFBrTDZRQUF3QWFNSmdCNEtEMzQ3d0R1S1FFQWdHcDlNUUVBQUFBQUFBQUFBSlZLMTFmcEJ2MFdBQUNnSHNGbmxOUDFsYTBIY0ZkK2U3OThmYTg5bWdQZzlwN1NuNWNEQUVDOVBwc0FBQUFBQUFBQUFJQUtwZXZMMzBRSEFBQzJaRFFCd0gzZFVQcTMvNWlzQWVCZUVnQUFXaUxnQWdBQUFBQUFBQUJBYmRKQnZBVUFBTmllYkFLQXgrK1ZieEdYWkFvQTk1SUFBTkFTQVJjQUFBQUFBQUFBQUdveFhsK2ZEdUl0QUFEQU5ubldBWGdzSGNSYkFOeExBZ0JBZ3dSY0FBQUFBQUFBQUFDb3dYaDl2WmdCQUFEWXVHd0NBTytWQU40WEFRQmdld1JjQUFBQUFBQUFBQUJZMjNnUWJ3RUFBUGJ6L0FNQUFPNGhBUUJnWXdSY0FBQUFBQUFBQUFCWTAzZ1Fid0VBQVBham1BQUFnQ2VNN2lFQkFLQU5BaTRBQUFBQUFBQUFBS3dsSDhSYkFBQ0FmVDRMQVFEQWU0d21BQUNBTm53eEFRQUFBQUFBQUFBQUswZ0gvOVpRQUFCZ24wWVRBQUR3VGljVEFBQkFHejZiQUFBQUFBQUFBQUNBaGFXRGVBc0FBTEJmbm9jQUFIaVAwUVFBQU5BT0FSY0FBQUFBQUFBQUFKYVVEbjVZRVFBQUlKc0FBQUQzakFBQXNCMENMZ0FBQUFBQUFBQUFMR0c4dmo0ZHhGc0FBQUJlblV3QUFNQUQvandkQUFBYUl1QUNBQUFBQUFBQUFNRGN4dXZyeFF3QUFBQTN6MG9BQVBBejJRUUFBTkFXQVJjQUFBQUFBQUFBQU9ZMEhzUmJBQUFBZnZXOEJBQUFQM015QVFBQXRFWEFCUUFBQUFBQUFBQ0F1YVNEZUFzQUFNQ3YrS0ZjQUFCK1pqUUJBQUMwUjhBRkFBQUFBQUFBQUlBNXBPdXJtQUVBQU9DdTBRUUFBTGhIQkFDQTlnbTRBQUFBQUFBQUFBQXdwZkVnM2dJQUFQRE1NeFFBQVB6YnlRUUFBTkFlQVJjQUFBQUFBQUFBQUtZeVhsOHZCL0VXQUFDQTkvTER1UUFBL0ZzMkFRQUF0RW5BQlFBQUFBQUFBQUNBS1l5SGIvRVdBQUFBbm4rZUFnQUE5NFlBQU5Bd0FSY0FBQUFBQUFBQUFENHFIY1JiQUFBQW9rWVRBQUR3cHBnQUFBRGFKT0FDQUFBQUFBQUFBTUJIcElPL1VBNEFBUEFSSnhNQUFIQ1ZUUUFBQU8wU2NBRUFBQUFBQUFBQUlHSzh2ajRkeEZzQUFBQ21rRTNBZjltNWx4dUVZU0NLb2dqUmgwdWhKWmRBQ1pTVUtZVk8yTEJoRlRUWW9Iak9rV2pnU1k3SVJ4Y0FLRS9ZRHdBQUR1eGlBb0JTYmlZQStMbk5CQUNBKzA0QUFBQVc1VU55QVBpLzdlVFpMSUJyT2dBQTdQTmZFd0FBSmhOd0FhakZCNVFBQUFDNDd3Ull6T04rTlFMQUFLMkhFUUFBT0tKNC9RQndUUWQyZUtjQ2VaNmh3eEo4MndVQUFKT2RUUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFrQ1BnQWdBQUFBQUFBQUFBQUFBQUFBQUFBQUNRSk9BQ0FBQUFBQUFBQUFBQUFBREEwbG9QSTRDekF3QUFBTk1JdUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSkFtNEFBQUFBQUFBQUFBQUFBQUFzTHpXd3dnQUFBQUFUQ0hnQWdBQUFBQUFBQUFBQUFBQUFNQWIwU01BQUFENG5JQUxBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQ1NnQXNBQUFBQUFBQUFBQUFBQUFBbHRCNUdBR2NGQUFBQWhoTndBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQklFbkFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBRWdTY0FFQUFBQUFBQUFBQUFBQUFLQ00xc01JNEl3QUFBREFVQUl1QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJKQWk0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVrQ0xnQUFBQUFBQUFBQUFBQUFBSlRTZWhnQm5BMEFBQUFZUnNBRkFBQUFBQUFBQUFBQUFBQUFBQUFBQUNCSndBVUFBQUFBQUFBQUFBQUFBSUJ5V2c4akFBQUFBRENFZ0FzQUFBQUFBQUFBQUFBQUFBQkFjYUpHQUFBQWtDZmdBZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQ1FKT0FDQUFBQUFBQUFBQUFBQUFCQVNhMkhFY0JaQUFBQWdLODlCV0R2N284anR3MHdEc00zNm9PcEpHUTZZaW9RV0lHM0l3R3BKS3BFNGVXYytFT3Iwd3E3SkFIaWVXYmdHWTkzL01jN1BKRzg4LzRzNEFJQUFBQUFBQUFBQUFBQUFBQUFBQUFBVUVqQUJRQUFBQUFBQUFBQUFBQUFBQUFBQUFDZ2tJQUxBQUFBQUFBQUFBQUFBQUFBM1JybWJBVDhHZ0FBQUFEdUl1QUNBQUFBQUFBQUFBQUFBQUFBQUFBQUFGQkl3QVVBQUFBQUFBQUFBQUFBQUFBQUFBQUFvSkNBQ3dBQUFBQUFBQUFBQUFBQUFGMGI1bXdFWFBzQUFBQkFNUUVYQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUJDQWk0QUFBQUFBQUFBQUFBQUFBQjBiNWl6RVFBQUFBQW9JdUFDQUFBQUFBQUFBQUFBQUFBQTBCblJJZ0FBQUhnY0FSY0FBQUFBQUFBQUFBQUFBQUFBQUFBQWdFSUNMZ0FBQUFBQUFBQUFBQUFBQUxBYTVtd0VYT3NBQUFEQWx3bTRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVVFbkFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ2drNEFJQUFBQUFBQUFBQUFBQUFBQy9HZVpzQkZ6akFBQUF3SmNJdUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRkJKd0FRQUFBQUFBQUFBQUFBQUFBQUFBQUFBb0pPQUNBQUFBQUFBQUFBQUFBQUFBZnpETTJRaTR0Z0VBQUlDYkNiZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFCUVNjQUVBQUFBQUFBQUFBQUFBQUlDL0dPWnNCQUFBQUFCdUl1QUNBQUFBQUFBQUFBQUFBQUFBY0hLaVJBQUFBTEFkQVJjQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0VJQ0xnQUFBQUFBQUFBQUFBQUFBSERGTUdjajRGb0dBQUFBUGlYZ0FnQUFBQUFBQUFBQUFBQUFBQUFBQUFCUVNNQUZBQUFBQUFBQUFBQUFBQUFBQUFBQUFLQ1FnQXNBQUFBQUFBQUFBQUFBQUFCOFlKaXpFWEFOQXdBQUFEOGw0QUlBQUFBQUFBQUFBQUFBQUFBQUFBQUFVRWpBQlFBQUFBQUFBQUFBQUFBQUFBQUFBQUNna0lBTEFBQUFBQUFBQUFBQUFBQUEvTVF3WnlQZzJnVUFBQUErSk9BQ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUZCSXdBVUFBQUFBQUFBQUFBQUFBQUErTWN6WkNMaG1BUUFBZ0tzRVhBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNnbTRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVVFbkFCQUFBQUFBQUFBQUFBQUFDQUd3eHpOZ0t1VlFBQUFPQWRBUmNBQUFBQUFBQUFBQUFBQUFBQUFBQUFnRUlDTGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBaFFSY0FBQUFBQUFBQUFBQUFBQUE0RWJEbkkyQWF4UUFBQUQ0RXdFWEFBQUFBQUFBQUFBQUFBQUFBQUFBQUlCQ0FpNEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJVUVYQUFBQUFBQUFBQUFBQUFBQU9BTGhqa2JBZGNtQUFBQThIOENMZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFoUVJjQUFBQUFBQUFBQUFBQUFBQTRJdUdPUnNCMXlRQUFBRHdYd0l1QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNGQkZ3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFvSnVBQUFBQUFBQUFBQUFBQUFBRUNCWWM1R3dMVUlBQUFBQ0xnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUpRU2NBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUtDVGdBZ0FBQUFBQUFBQUFBQUFBQUlXR09Sc0IxeUFBQUFCMFRzQUZBQUFBQUFBQUFBQUFBQUFBQUFBQUFLQ1FnQXNBQUFBQUFBQUFBQUFBQUFBQUFBQUFRS0VuRXdBQUFBQUFBTFJybUxNUkFBQUFBQUFBRHZiOXoyeGVMNk1oT09UYUF3QUFBSTczelFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUdVRVhBQUFBQUFBQUFBQUFBQUFBT0JPdzV5TmdHc09BQUFBT2lYZ0FnQUFBQUFBQUFBQUFBQUFBQUFBQUFCUVNNQUZBQUFBQUFBQUFBQUFBQUFBQUFBQUFLQ1FnQXNBQUFBQUFBQUFBQUFBQUFBOHdEQm5JK0JhQXdBQWdBNEp1QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFGQkp3QVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFvSk9BQ0FBQUFBQUFBQUFBQUFBQUFEekxNMlFpNHhnQUFBS0F6QWk0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlVRVhBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNnbTRBQUFBQUFBQUFBQUFBQUFBd0FNTmN6WUNyaTBBQUFEb2lJQUxBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQWhBUmNBQUFBQUFBQUFBQUFBQUFCNHNHSE9Sc0ExQlFBQUFKMFFjQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFLQ1RnQWdBQUFBQUFBQUFBQUFBQUFBQUFBQUJRU01BRkFBQUFBQUFBQUFBQUFBQUFOakRNMlFpNGxnQUFBS0FEQWk0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlVRVhBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNnbTRBQUFBQUFBQUFBQUFBQUFBd0VhR09Sc0IxeEFBQUFDY25JQUxBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQWhBUmNBQUFBQUFBQUFBQUFBQUFBQUFBQUFnRUlDTGdBQUFBQUFBQUFBQUFBQUFMQ2hZYzVHd0xVREFBQUFKL1prQWdBQUFBQUFBQUFBQUFBQWdEYThYa1lqZ0Yvek5FQjhCd0FBb0MvZlRBQUFBQUFBQUFBQUFBQUFBTkFHUVFBQVA2c0JBQUNvajRBTEFBQUFBQUFBQUFBQUFBQUFBQUFBQUVBaEFSY0FBQUFBQUFBQUFBQUFBQUFBQUFBQWdFSUNMZ0FBQUFBQUFBQUFBQUFBQUEwWjVtd0VBRCtqQVFBQXFJaUFDd0FBQUFBQUFBQUFBQUFBQUFBQUFBQkFJUUVYQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUJDQWk0QUFBQUFBQUFBQUFBQUFBQ05HZVpzQkFBL213RUFBS2lFZ0FzQUFBQUFBQUFBQUFBQUFBQUFBQUFBUUNFQkZ3QUFBQUFBQUFBQUFBQUFBQUFBQUFDQVFnSXVBQUFBQUFBQUFBQUFBQUFBRFJybWJBUUFQNU1CQUFDb2dJQUxBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQWhBUmNBQUFBQUFBQUFBQUFBQUFBQUFBQUFnRUlDTGdBQUFBQUFBQUFBQUFBQUFJMGE1bXdFQUQrTEFRQUFPSmlBQ3dBQUFBQUFBQUFBQUFBQUFBQUFBQUJBb1NjVEFIVGx6UVFBdTR2cldjd0FBSGp2QkFBQTRJU205ZmpmeWdMQXNaN0RqeitYQm1CZnY3ajNVSnRoOW9vT0FKN3Bmc3AvMndYZ2ZnUEF4cjZaQUFBQUFBQUFBQUNBQW1rOW94a0FBQUM2ZXhjRUFQQk1Bd0FBOEJjQ0xnQUFBQUFBQUFBQWxFcnJlVEVEQUFCQU43SUpBSUFUaUNZQUFBQWVUY0FGQUFBQUFBQUFBSUI3VEVIRUJRQUFvQ2ZSQkFCQTQwVHBBQUNBaHhOd0FRQUFBQUFBQUFEZ1hsUDRFWEVaVFFFQUFIQjZ5UVFBUU1PaUNRQUFnQzBJdUFBQUFBQUFBQUFBOEFoVCtQRWxQaEVYQUFDQWM4dEJ4QVVBYUpmbkdBQUFZQk1DTGdBQUFBQUFBQUFBUEZJS0lpNEFBQUE5dlBzQkFMUW9td0FBQU5pQ2dBc0FBQUFBQUFBQUFJK1cxdk5pQmdBQWdOTmFUQUFBTkNpYUFBQUEySXFBQ3dBQUFBQUFBQUFBVzVpQ2lBc0FBTUNaSlJNQUFKNWZBQUFBZmhCd0FRQUFBQUFBQUFCZ0sxTVFjUUVBQURpcmFBSUFvREhaQkFBQXdGWUVYQUFBQUFBQUFBQUEyTkswbnJmMWpLWUFBQUE0RlYrQUJnQmFFazBBQUFCc1NjQUZBQUFBQUFBQUFJQTlwQ0RpQWdBQWNEYlJCQUJBSXhZVEFBQUFXeEp3QVFBQUFBQUFBQUJnTHltSXVBQUFBSnp0UFE4QXdETUxBQURRUFFFWEFBQUFBQUFBQUFEMmxOYnpZZ1lBQUlCVHlDWUFBQnFRVEFBQUFHeE53QVVBQUFBQUFBQUFnTDFOUWNRRkFBRGdMS0lKQUlES0xTWUFBQUMySnVBQ0FBQUFBQUFBQU1BUnBpRGlBZ0FBY0FhK0VBMEExQ3laQUFBQTJJT0FDd0FBQUFBQUFBQUFSNW1DaUFzQUFNQVpKQk1BQUo1VEFBQ0FuZ200QUFBQUFBQUFBQUJ3cEdrOWIrc1pUUUVBQU5Dc1pBSUFvRktMQ1FBQWdEMEl1QUFBQUFBQUFBQUFVSU1VUkZ3QUFBQmE1WXZSQUVDTmtna0FBSUM5Q0xnQUFBQUFBQUFBQUZDTEZFUmNBQUFBV2hWTkFBQjRQZ0VBQUhvbDRBSUFBQUFBQUFBQVFFMVNFSEVCQUFCbzlYME9BS0FtMlFRQUFNQmVCRndBQUFBQUFBQUFBS2hOQ2lJdUFBQUFyZkVGYVFDZ0p0RUVBQURBbmdSY0FBQUFBQUFBQUFDb1VWclBpeGtBQUFDYUVrMEFBRlFpbVFBQUFOaVRnQXNBQUFBQUFBQUFBTFdhZ29nTEFBQkFTeFlUQUFDVnlDWUFBQUQySk9BQ0FBQUFBQUFBQUVETnBpRGlBZ0FBMEpKa0FnRGdZTkVFQUFEQTNnUmNBQUFBQUFBQUFBQ28zUlJFWEFBQUFGcVJUQUFBZUI0QkFBQjZJK0FDQUFBQUFBQUFBRUFMcGlEaUFnQUEwSUxGQkFEQWdkSjZzaGtBQUlDOUNiZ0FBQUFBQUFBQUFOQ0tLWWk0QUFBQXRDQ2FBQUE0U0RJQkFBQndCQUVYQUFBQUFBQUFBQUJhTWdVUkZ3QUFnTm9sRXdBQUIxbE1BQUFBSEVIQUJRQUFBQUFBQUFDQTFrenJlVnZQYUFvQUFJQXFaUk1BQUFkSUpnQUFBSTRpNEFJQUFBQUFBQUFBUUt0U0VIRUJBQUNvVlRRQkFMQ3paQUlBQU9Bb0FpNEFBQUFBQUFBQUFMUXNCUkVYQUFDQUdpMG1BQUE4ZndBQUFMMFFjQUVBQUFBQUFBQUFvSFVwaUxnQUFBRFUrcjRHQU9DNUF3QUFPRDBCRndBQUFBQUFBQUFBemlBRkVSY0FBSUFhMzlVQUFEeDNBQUFBcHlmZ0FnQUFBQUFBQUFEQVdhUWc0Z0lBQUZDVHhRUUFnT2NPQUFDZ0J3SXVBQUFBQUFBQUFBQ2NTUW9pTGdBQUFEV0pKZ0FBUEc4QUFBQm5KK0FDQUFBQUFBQUFBTURacENEaUFnQUFVTk03R2dDQTV3MEFBT0RVQkZ3QUFBQUFBQUFBQURpakZFUmNBQUFBYXBCTkFBQjQzZ0FBQU01T3dBVUFBQUFBQUFBQWdMTktRY1FGQUFDZ0J0RUVBSURuREFBQTRNd0VYQUFBQUFBQUFBQUFPTE1VUkZ3QUFBQnFlRGNEQVBDY0FRQUFuSmFBQ3dBQUFBQUFBQUFBWjVlQ2lBc0FBTUNSY3ZEbGFnQmd1K2NNQUFDQXd3bTRBQUFBQUFBQUFBRFFneFJFWEFBQUFJNStMd01BZUtSb0FnQUFvQllDTGdBQUFBQUFBQUFBOUNJRkVSY0FBSUNqTENZQUFCNHNtUUFBQUtqRmt3a0FBQUFBQUFBQUFPaElXcyswbm13S0FBQ0F3OTdKQUFEdWZxNzQ5NjkvOS91OE4vcmJQLzlsQkFBQTJOZzNFd0FBQUFBQUFBQUEwSm0wbnRFTUFBQUF1NHNtQUFBZUpKa0FBQUNvaVlBTEFBQUFBQUFBQUFBOVNrSEVCUUFBWUcvWkJBREFneXdtQUFBQWFpTGdBZ0FBQUFBQUFBQkFyNklKQUFBQXZJc0JBTTFKSmdBQUFHb2o0QUlBQUFBQUFBQUFRSyttOWJ5WUFRQUFZRmZKQkFDQTV3a0FBT0JzQkZ3QUFBQUFBQUFBQU9qWkZFUmNBQUFBOXBTREwxMERBUGRaVEFBQUFOUkd3QVVBQUFBQUFBQUFnTjVOUWNRRkFBQmdUOGtFQUlEbkNBQUE0RXdFWEFBQUFBQUFBQUFBUU1RRkFBQmdUNHNKQUlCQ3lRUUFBRUNOQkZ3QUFBQUFBQUFBQU9DSEtZaTRBQUFBN0NXWkFBQW9JQVFIQUFCVVNjQUZBQUFBQUFBQUFBQitOd1VSRndBQWdEMUVFd0FBbmg4QUFJQ3pFSEFCQUFBQUFBQUFBSUEvbTlZem1nRUFBR0JUMlFRQXdCY2xFd0FBQUxVU2NBRUFBQUFBQUFBQWdQZFNFSEVCQUFEWVdqUUJBUEFGQW5BQUFFQzFCRndBQUFBQUFBQUFBT0M2RkVSY0FBQUF0bjd2QWdDNFJUUUJBQUJRTXdFWEFBQUFBQUFBQUFENFdBb2lMZ0FBQUZ2SlFjUUZBTGlOWndZQUFLQnFBaTRBQUFBQUFBQUFBUEJ6S1lpNEFBQUFiUG5PQlFEd21Xd0NBQUNnWmdJdUFBQUFBQUFBQUFEd3VXZ0NBQUNBVFN3bUFBQStFVTBBQUFEVVRzQUZBQUFBQUFBQUFBQStONjNueFF3QUFBQ2JTQ1lBQUg1QzhBMEFBS2llZ0FzQUFBQUFBQUFBQU54bUNpSXVBQUFBVzRnbUFBQStrRXdBQUFDMFFNQUZBQUFBQUFBQUFBQnVONjNuMlF3QUFBQVBsVTBBQUh3Z21RQUFBR2lCZ0FzQUFBQUFBQUFBQUh4TlhNOW9CZ0FBZ0llL2F3RUEvTlZpQWdBQW9BVUNMZ0FBQUFBQUFBQUE4SFVwaUxnQUFBQTgrajBMQU1EekFRQUEwQ1FCRndBQUFBQUFBQUFBS0pPQ2lBc0FBTUNqWkJNQUFIK1JUQUFBQUxSQ3dBVUFBQUFBQUFBQUFNcEZFd0FBQUhqSEFnQTJzWmdBQUFCb2hZQUxBQUFBQUFBQUFBQ1VtOWJ6WWdZQUFJQ0g4Q1Z0QU9CL2tna0FBSUNXQ0xnQUFBQUFBQUFBQU1COXBpRGlBZ0FBOENqSkJBREFLcG9BQUFCb2lZQUxBQUFBQUFBQUFBRGNiMXJQYUFZQUFJQzdKUk1BQUt0c0FnQUFvQ1VDTGdBQUFBQUFBQUFBOEJncGlMZ0FBQURjYXpFQkFIUXZtZ0FBQUdpTmdBc0FBQUFBQUFBQUFEeE9NZ0VBQU1EZG9na0FvR3ZKQkFBQVFHc0VYQUFBQUFBQUFBQUE0TEZlVEFBQUFIQ1haQUlBNkZvMkFRQUEwQm9CRndBQUFBQUFBQUFBZUt3cGlMZ0FBQURjdzVlMkFhQmYwUVFBQUVDTEJGd0FBQUFBQUFBQUFPRHhwdldNWmdBQUFDZ1dUUUFBWFVvbUFBQUFXaVRnQWdBQUFBQUFBQUFBMjBoQnhBVUFBS0RVWWdJQTZGSTJBUUFBMENJQkZ3QUFBQUFBQUFBQTJFNDBBUUFBUUxGa0FnRG9TalFCQUFEUUtnRVhBQUFBQUFBQUFBRFl6clNlRnpNQUFBQVVTU1lBZ0s0c0pnQUFBRnIxWkFJQUFBQUFBQUFBQU5qVXRKN3g5VExtVGY3dHY3NVpHQUFBYU03NmpuVEx4NVpoenRGYUFOQ0ZkTzM1WUgwV3NBd0FBTkNFYnlZQUFBQUFBQUFBQUlETnBXSE9veGtBQUFDK0xKb0FBTHFRVEFBQUFMUk13QVVBQUFBQUFBQUFBUFlSVFFBQUFQRERNT2RiUDVxc0JRRG45M29abHp1ZUZ3QUFBQTRuNEFJQUFBQUFBQUFBQVB1WWhqbS9tQUVBQU9CMnI1ZlJON2NCNFB5U0NRQUFnTllKdUFBQUFBQUFBQUFBd0g2K1IxeEdNd0FBQUh4Sk5BRUFuRm95QVFBQTBEb0JGd0FBQUFBQUFBQUEyRmN5QVFBQVFBakRuRy82M090bFhLd0ZBT2QxN1Y1LzYzTUNBQUJBTFFSY0FBQUFBQUFBQUFCZ1o4T2NYNndBQUFEd0pja0VBT0FlRHdBQVVDc0JGd0FBQUFBQUFBQUEyTjgwelBuWkRBQUFRTy9XZDZOYlA1cXNCUUNuRkUwQUFBQ2NnWUFMQUFBQUFBQUFBQUFjSXc1ekhzMEFBQUR3dWRmTHVGZ0JBRTU1ajM5WGMvdEM0QTBBQUtBYUFpNEFBQUFBQUFBQUFIQ2NhQUlBQUFEdlVBRGczZzRBQU5BMkFSY0FBQUFBQUFBQUFEak9OTXo1MlF3QUFFRFAxdmVpV3orYXJBVUFwNUx1ZUM0QUFBQ29pb0FMQUFBQUFBQUFBQUFjS3c1ekhzMEFBQUR3YzYrWDBUZTZBY0M5SFFBQW9Fb0NMZ0FBQUFBQUFBQUFjTHhvQWdBQUFPOVBBT0NlRGdBQTBDWUJGd0FBQUFBQUFBQUFPTjQwelBuWkRBQUFRSy9XZDZKYlA1cXNCUUNua081NEhnQUFBS2lPZ0FzQUFBQUFBQUFBQU5RaERuTWV6UUFBQVBDeDE4djQvWnZkeVJJQTBMVDAyejBkQUFEZ05KNU1BQUFBQUFBQUFBQUExZmdlY2ZtSEdRQUFnQjZ0NzBPM2ZqU3RaN0lZQURRcmZlRytEd0FBMElSdkpnQUFBQUFBQUFBQWdHcE02M20rOWNPdmw5RmlBQUJBanhZVEFJQjdPUUFBUUUwRVhBQUFBQUFBQUFBQW9DN1JCQUFBQUo5S0pnQUE5M0FBQUlCYUNMZ0FBQUFBQUFBQUFFQjlYajc3d090bHRCSUFBTkN6YUFJQWFGSXlBUUFBY0VZQ0xnQUFBQUFBQUFBQVVKOXBQUW90QUFBQUg4c21BSUFtTFNZQUFBRE9TTUFGQUFBQUFBQUFBQURxRkUwQUFBRGd2UWtBVGlTWkFBQUFPQ3NCRndBQUFBQUFBQUFBcU5PMG51ZHIvK0QxTWxvSEFBREFsOEFCd0wwYkFBQ2dFZ0l1QUFBQUFBQUFBQUJRcjJnQ0FBQ0FEK1hnaStBQTBKTEZCQUFBd0ZrSnVBQUFBQUFBQUFBQVFOMWUvdmczcjVmUklnQUFBTDlMSmdDQUprUVRBQUFBWnliZ0FnQUFBQUFBQUFBQWRadldvOW9DQUFCdzNXSUNBR2hDTWdFQUFIQm1BaTRBQUFBQUFBQUFBRkMvK1AwdnJ4Y2RGd0FBZ0N1U0NRQ2dldGtFQUFEQW1RbTRBQUFBQUFBQUFBQkEvYWIxcUxjQUFBQmNGMDBBQU83VkFBQUFSeEp3QVFBQUFBQUFBQUNBTmtRVEFBQUFYSlZOQUFCVlN5WUFBQURPVHNBRkFBQUFBQUFBQUFEYU1BMXpIczBBQUFCd1ZUUUJBRlJMYkEwQUFEZzlBUmNBQUFBQUFBQUFBR2hITkFFQUFNQlZ5UVFBVUtWb0FnQUFvQWNDTGdBQUFBQUFBQUFBMEk1cG1QTm9CZ0FBZ0hkeUVIRUJnQnE1UHdNQUFGMFFjQUVBQUFBQUFBQUFnTFpFRXdBQUFGeVZUQUFBMWQyYnN4a0FBSUFlQ0xnQUFBQUFBQUFBQUVCYnBtSE9veGtBQUFEZVdVd0FBRlZKSmdBQUFIb2g0QUlBQUFBQUFBQUFBTzJKSmdBQUFMZ3FtUUFBcWlHdUJnQUFkRVBBQlFBQUFBQUFBQUFBMmpNTmN4N05BQUFBOEU0MEFRQlVJWmtBQUFEb2lZQUxBQUFBQUFBQUFBQzBLWm9BQUFEZ25Xd0NBS2hDTWdFQUFOQVRBUmNBQUFBQUFBQUFBR2pUTk14NU5BTUFBTUE3MFFRQWNMakZCQUFBUUUrZVRBRFFsV2dDZ04wbEV3QUEzanNCQUFBQUFOaElDbjV2RmdEY0l3RUFQdWZaQ0FBQU52YkwyOXViRlFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ253ekFRQUFBQUFBQUFBQUFBQUFBQUFBQUFCQUdRRVhBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQkNBaTRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSVVFWEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ2dtNEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBVUVuQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFDZ2s0QUlBQUFBQUFBQUFBQUFBQUFBQUFBQUFVRWpBQlFBQUFBQUFBQUFBQUFBQUFBQUFBQUNna0lBTEFBQUFBQUFBQUFBQUFBQUFBQUFBQUVBaEFSY0FBQUFBQUFBQUFBQUFBQUFBQUFBQWdFSUNMZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFoUVJjQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFLQ2JnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJRU2NBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUtDVGdBZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQlFTTUFGQUFBQUFBQUFBQUFBQUFBQUFBQUFBS0NRZ0FzQUFBQUFBQUFBQUFBQUFBQUFBQUFBUUNFQkZ3QUFBQUFBQUFBQUFBQUFBQUFBQUFDQVFnSXVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0ZCRndBQUFBQUFBQUFBQUFBQUFBQUFBRDREM3QzbU52R3JZWmgxRGZJUHRTVmROZ2RxU3N3WndYVmtzaXVwRnFKcjI5Nld6aXRIY3VmWll2a2R3NGd4RUNVL0hnUWNFWTI1ZzBBRUdUQUJRQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ3lJQUxBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQ1FBUmNBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQ0FETGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUVFaY0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQ0RMZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUVpjQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFDRExnQWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFRWk1BRkFBQUFBQUFBQUFBQUFBQUFBQUFBQUNESWdBc0FBQUFBQUFBQUFBQUFBQUFBQUFBQVFKQUJGd0FBQUFBQUFBQUFBQUFBQUFBQUFBQ0FJQU11QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJCQmx3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlJTXVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJCbHdBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlNdUFDQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkJrd0FVQUFBQUFBQUFBQUFBQUFBQUFBQUFBSU1pQUN3QUFBQUFBQUFBQUFBQUFBQUFBQUFCQWtBRVhBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQWdBeTRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUVHWEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ2d5NEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUdYQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ3k0QUlBQUFBQUFBQUFBQUFBQUFBQUFBQUFFR1RBQlFBQUFBQUFBQUFBQUFBQUFBQUFBQUFneUlBTEFBQUFBQUFBQUFBQUFBQUFBQUFBQUVDUUFSY0FBQUFBQUFBQUFBQUFBQUFBQUFBQWdDQURMZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFRUVpjQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNDRExnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFRWmNBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNETGdBZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQVFaTUFGQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0RJZ0FzQUFBQUFBQUFBQUFBQUFBQUFBQUFBUUpBQkZ3QUFBQUFBQUFBQUFBQUFBQUFBQUFDQUlBTXVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkJCbHdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUlNdUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkJsd0FRQUFBQUFBQUFBQUFBQUFBQUFBQUFBSU11QUNBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQmt3QVVBQUFBQUFBQUFBQUFBQUFBQUFBQUFJTWlBQ3dBQUFBQUFBQUFBQUFBQUFBQUFBQUJBa0FFWEFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBZ0F5NEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFRUdYQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnZ3k0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFR1hBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFneTRBSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVHVEFCUUFBQUFBQUFBQUFBQUFBQUFBQUFBQWd5SUFMQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUNRQVJjQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0NBRExnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFRWmNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0NETGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFaY0FFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0RMZ0FnQUFBQUFBQUFBQUFBQUFBQUFBQUFBUVpNQUZBQUFBQUFBQUFBQUFBQUFBQUFBQUFDRElnQXNBQUFBQUFBQUFBQUFBQUFBQUFBQUFRSkFCRndBQUFBQUFBQUFBQUFBQUFBQUFBQUNBSUFNdUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQkJsd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFJSU11QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQmx3QVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJTXVBQ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUJCa3dBVUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlNaUFDd0FBQUFBQUFBQUFBQUFBQUFBQUFBQkFrQUVYQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFnQXk0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVFR1hBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdneTRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVHWEFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWd5NEFJQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUdUQUJRQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ3lJQUxBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQ1FBUmNBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQ0FETGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUVFaY0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQ0RMZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUVpjQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFDRExnQWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFRWk1BRkFBQUFBQUFBQUFBQUFBQUFBQUFBQUNESWdBc0FBQUFBQUFBQUFBQUFBQUFBQUFBQVFKQUJGd0FBQUFBQUFBQUFBQUFBQUFBQUFBQ0FJQU11QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJCQmx3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlLK1NnQ1F4MCsvL242dkFzQ25hMy84OW5PWEFRRHd1Uk9Bai9yY2VUNXRQbmNDWE1IaDJMZkhYNG9TQUo5L1QvdjR1dG85N2VQOThkOWZQenc4cUFzczc2ZGZmM2NmQzNBRGYvejI4NjRDd1d1M242a0NjRTN0N29yZlc1djB2c3kvQXZjaEFLTmZxM3dQQVNBUkF5NEF1VlFKQUc1eTlucVFEZ0R3dVJNQW56c0J4bGZjMHdMY1JIdDgvU0lEZ1B0WWdNbDQrSW9vMTIwQXJuMWQ4Zk5pM0ljQWpNMzNFQUFTK1NJQkFBQUFBQUFBQUFCd0kwVUNBQUFna1NvQkFGZlVKQUFBQUJpSEFSY0FBQUFBQUFBQUFPQ1c3aVVBQUFDUzhEK3ZBM0F0N2ZIVlpRQUFBQmlIQVJjQUFBQUFBQUFBQU9DV3lqWCtrdk5wVXhJQUFKaEJrd0FBMXhNQUFJRDFHSEFCQUFBQUFBQUFBQUJ1cVVnQUFBQWswaVFBNEFwMkNRQUFBTVppd0FVQUFBQUFBQUFBQUxpMWV3a0FBSUFrUEhBUHdIczFDUUFBQU1aandBVUFBQUFBQUFBQUFMaTFJZ0VBQUpCSWt3QUExeEVBQUlDMUdIQUJBQUFBQUFBQUFBQnVyVWdBQUFBa1VpVUE0QjEyQ1FBQUFNWmp3QVVBQUFBQUFBQUFBQmpCdlFRQUFFQVNYUUlBZ3FvRUFBQUFZekxnQWdBQUFBQUFBQUFBaktCRS8rRDV0S2tIQUFETXBrb0FRRUNUQUFBQVlFd0dYQUFBQUFBQUFBQUFnQkVVQ1FBQWdFU2FCQUFFZEFrQUFBREdaTUFGQUFBQUFBQUFBQUFZeGIwRUFBQkFFaDdBQitDdHFnUUFBQURqTXVBQ0FBQUFBQUFBQUFBQUFBRHcrYW9FQUx4Qmt3QUFBR0JjQmx3QUFBQUFBQUFBQUlCUlZBa0FBSUJFZGdrQXVGQjdmSFVaQUFBQXhtWEFCUUFBQUFBQUFBQUFHTWttQVFBQWtFaVRBQURYQ3dBQWdQa1pjQUVBQUFBQUFBQUFBRVpTM3ZMbTg4bmVDd0FBTUxVbUFRQVgyQ1VBQUFBWW13RVhBQUFBQUFBQUFBQmdKRlVDQUFBZ0VRL2tBL0NhSmdFQUFNRDRETGdBQUFBQUFBQUFBQUNqMlNRQUFBQVNhUklBOEFOVkFnQUFnUEVaY0FFQUFBQUFBQUFBQUVaVEpBQUFBQkpwRWdEd0ExMENBQUNBOFJsd0FRQUFBQUFBQUFBQVJsTWtBQUFBRXRrbEFPQUZWUUlBQUlBNUdIQUJBQUFBQUFBQUFBQkdVeTU1MC9tMEtRVUFBS3lpU2dEQU01b0VBQUFBY3pEZ0FnQUFBQUFBQUFBQWpPaGVBZ0FBSUpFbUFRRFA2QklBQUFETXdZQUxBQUFBQUFBQUFBQXdvaUlCQUFDUWlBZjBBZmluS2dFQUFNQThETGdBQUFBQUFBQUFBQUFqS2hJQUFBREpWQWtBZUdLWEFBQUFZQjRHWEFBQUFBQUFBQUFBZ0ZGdEVnQUFBSWswQ1FCd1RRQUFBSmlUQVJjQUFBQUFBQUFBQUdCVTVhWGZPSjlzdXdBQUFNdnBkeDdZQitCUHJnY0FBQUNUTWVBQ0FBQUFBQUFBQUFDTXFrb0FBQUFrMHlRQTRORXVBUUFBd0Z3TXVBQUFBQUFBQUFBQUFBQUFBSXpCQS9zQU5Ba0FBQURtWThBRkFBQUFBQUFBQUFBWTJiMEVBQUJBTWswQ2dOU3FCQUFBQVBNeDRBSUFBQUFBQUFBQUFFemxmTnBFQUFBQVZ0WWtBRWl0U3dBQUFEQWZBeTRBQUFBQUFBQUFBTURJcWdRQUFFQXl1d1FBYVZVSkFBQUE1bVRBQlFBQUFBQUFBQUFBR04wbUFRQUFrRXlWQUNDbEpnRUFBTUNjRExnQUFBQUFBQUFBQUFDakt4SUFBQURKTkFrQVV1b1NBQUFBek1tQUN3QUFBQUFBQUFBQU1McnkxeGZuMDZZR0FBQ1FnUWY0QWZLcEVnQUFBTXpMZ0FzQUFBQUFBQUFBQURDNklnRUFBSkJRbFFBZ2xWMENBQUNBZVJsd0FRQUFBQUFBQUFBQVpyQkpBQUFBSk5Na0FIRG1Bd0FBTUFjRExnQUFBQUFBQUFBQXdBeUtCQUFBUURKZEFvQTBtZ1FBQUFCek0rQUNBQUFBQUFBQUFBRE1vSnhQbXdvQUFFQTJWUUtBRkhZSkFBQUE1bWJBQlFBQUFBQUFBQUFBbUVHUkFBQUFTTWdEL1FEcmF4SUFBQURNejRBTEFBQUFBQUFBQUFBd2hjT3hieW9BQUFBSk5Ra0FsbFlsQUFBQW1KOEJGd0FBQUFBQUFBQUFZQlpGQWdBQUlLRW1BY0RTdWdRQUFBRHpNK0FDQUFBQUFBQUFBQURNb2tnQUFBQWt0RXNBc0t3cUFRQUF3Qm9NdUFBQUFBQUFBQUFBQUxNb0VnQUFBRWsxQ1FDYzd3QUFBSXpMZ0FzQUFBQUFBQUFBQURDTnc3RnZLZ0FBQUFsVkNRQ1cxQ1VBQUFCWWd3RVhBQUFBQUFBQUFBQmdKa1VDQUFBZ0lRLzRBNnluU2dBQUFMQU9BeTRBQUFBQUFBQUFBTUJNaWdRQUFFQlNWUUtBcGV3U0FBQUFyTU9BQ3dBQUFBQUFBQUFBTUpNaUFRQUFrRlNUQU1DWkRnQUF3SmdNdUFBQUFBQUFBQUFBQUFBQUFJeXZTd0N3akNZQkFBREFXZ3k0QUFBQUFBQUFBQUFBVXprYys3MEtBQUJBVWxVQ2dDWHNFZ0FBQUt6RmdBc0FBQUFBQUFBQUFBQUFBTUFjUFBBUE1MOG1BUUFBd0hvTXVBQUFBQUFBQUFBQUFMT3BFZ0FBQUlrMUNRQ21WaVVBQUFCWWp3RVhBQUFBQUFBQUFBQUFBQUNBZVRRSkFLYldKUUFBQUZpUEFSY0FBQUFBQUFBQUFHQTZoMlBmVkFBQUFKTGFKUUNZVnBVQUFBQmdUUVpjQUFBQUFBQUFBQUNBR1JVSkFBQ0F4Sm9FQU01dkFBQUF4dkZWQWdBQUFBQUFnSGtkamwwRUFBQ3lLbmYrMTNrQUFDQ3ZkbWZZRW1CR2ZzQUxBQUN3cUM4U0FBQUFBQUFBQUFBQUV5b1NBQUFBaVJtMEJKaFBsUUFBQUdCZEJsd0FBQUFBQUFBQUFBQUFBQURtVXlVQW1JcnhMUUFBZ0lVWmNBRUFBQUFBQUFBQUFLWjBPUFo3RlFBQWdNU2FCQURPYkFBQUFNWmd3QVVBQUFBQUFBQUFBQUFBQUdBK1hRS0FhVFFKQUFBQTFtYkFCUUFBQUFBQUFBQUFtRldSQUFBQVNLNUtBRENGWFFJQUFJQzFHWEFCQUFBQUFBQUFBQUJtVlNRQUFBQ1NheElBT0tzQkFBQzRQUU11QUFBQUFBQUFBQUFBQUFBQWMrcDNoZ0VBUmxjbEFBQUFXSjhCRndBQUFBQUFBQUFBWUZxSFk3OVhBUUFBU0s1SkFEQzBMZ0VBQU1ENkRMZ0FBQUFBQUFBQUFBQUFBQURNYTVjQVlGaFZBZ0FBZ0J3TXVBQUFBQUFBQUFBQUFBQUFBTXl0U1FEZ2ZBWUFBT0IyRExnQUFBQUFBQUFBQUFBenF4SUFBQUFZQ0FBWVZKY0FBQUFnQndNdUFBQUFBQUFBQUFBQUFBQUFjOXNsQUJoT2xRQUFBQ0FQQXk0QUFBQUFBQUFBQU1EVURzZStxUUFBQUdBb0FHQXd4clVBQUFBU01lQUNBQUFBQUFBQUFBRE1ya2dBQUFCdzF5UUFjQ1lEQUFCd0d3WmNBQUFBQUFBQUFBQUFBQUFBNXRjbEFCaEdrd0FBQUNBWEF5NEFBQUFBQUFBQUFNRHNpZ1FBQUFEZlZBa0FockJMQUFBQWtJc0JGd0FBQUFBQUFBQUFZSFpGQWdBQWdHK2FCQURPWWdBQUFENmZBUmNBQUFBQUFBQUFBQUFBQUlBMWRBa0FicTVLQUFBQWtJOEJGd0FBQUFBQUFBQUFZSHFIWTk5VUFBQUErS1pLQUhCVHhyUUFBQUFTTXVBQ0FBQUFBQUFBQUFDc29FZ0FBQUR3elM0QndNMVVDUUFBQUhJeTRBSUFBQUFBQUFBQUFBQUFBTENXSmdHQTh4Y0FBSURQWThBRkFBQUFBQUFBQUFBQUFBQmdMVTBDZ0p2b0VnQUFBT1QwVlFJQUFBQUFBQUFBQUdBQjlmRzF5d0FBQUt6dWZOb3VlZHQrT1BhcUZzQ25xay9QNk1keldCRUFBSUJFdmtnQUFBQUFBQUFBQUFBQUFBQXdoemNNQWpTMUFEN1ArYlR0Z2JNYUFBQ0FSUmh3QVFBQUFBQUFBQUFBQUFBQVdFK1ZBT0RUTkFrQUFBQnlNK0FDQUFBQUFBQUFBQUFzNFhEc213b0FBQUIvT3ArMnJnTEFwMmtTQUFBQTVHYkFCUUFBQUFBQUFBQUFXRVdSQUFBQXlPQnd2SGlicGFvRjhQSE9wMjBQbk5FQUFBQXN4SUFMQUFBQUFBQUFBQUFBQUFEQW1wb0VBTTVhQUFBQVBwNEJGd0FBQUFBQUFBQUFBQUFBZ0FXZFQxdFhBZUREVlFrQUFBQXc0QUlBQUFBQUFBQUFBS3lpU0FBQUFHUnhPRjY4elZMVkF2ZzRUOGV5M25BMkF3QUFzQmdETGdBQUFBQUFBQUFBd0NxS0JBQUFBTjg3bjdaZEJZQVBVeVVBQUFEZ2Z3eTRBQUFBQUFBQUFBQUFBQUFBcksxSkFPQjhCUUFBNE9NWWNBRUFBQUFBQUFBQUFBQUFBSmpRNGRndmZXdFRDK0Q2enFldEI4NWtBQUFBRm1UQUJRQUFBQUFBQUFBQVdNYmgyRGNWQUFBQXZuYytiYnNLQUZkWEpRQUFBT0F2Qmx3QUFBQUFBQUFBQUlDVkZBa0FBQUNlMVNRQXVCN2pXQUFBQUR4bHdBVUFBQUFBQUFBQUFBQUFBR0JTaDJPLzlLMU5MWUNyYWNHekdBQUFnRVVaY0FFQUFBQUFBQUFBQUFBQUFGamMrYlR0S2dCY1RaTUFBQUNBcDc1S0FBQUFBQUFBQUFBQUFBQUFNSy9Ec1YvNjF2ci9Gd0R2czcvaDdBVUFBQ0NCTHhJQUFBQUFBQUFBQUFBQUFBQ2swQ1FBY0pZQ0FBQndmUVpjQUFBQUFBQUFBQUNBbFZRSkFBQUFYdFFsQUhpM0tnRUFBQUQvWk1BRkFBQUFBQUFBQUFBQUFBQWdqeW9Cd0xzWXd3SUFBT0JmRExnQUFBQUFBQUFBQUFBQUFBRGswU1FBQ0tzU0FBQUE4QndETGdBQUFBQUFBQUFBQUFBQUFIbjBPeU11QUZIT1R3QUFBSjVsd0FVQUFBQUFBQUFBQUFBQUFDQ1hKZ0ZBU0pjQUFBQ0E1eGh3QVFBQUFBQUFBQUFBQUFBQXlHV1hBT0ROcWdRQUFBQzh4SUFMQUFBQUFBQUFBQUN3bE1PeGJ5b0FBQUM4cWtrQThDYkdyd0FBQUhpUkFSY0FBQUFBQUFBQUFHQTFSUUlBQUlCWE5Ra0FuSmtBQUFCY2h3RVhBQUFBQUFBQUFBQUFBQUNBZkhZSkFDN1dKQUFBQU9CSERMZ0FBQUFBQUFBQUFBQUFBQURrVkNVQXVJalJLd0FBQUg3SWdBc0FBQUFBQUFBQUFBQUFBRUJPVFFJQVp5VUFBQUR2WjhBRkFBQUFBQUFBQUFBQUFBQWdweTRCd0t1cUJBQUFBTHpHZ0FzQUFBQUFBQUFBQUFBQUFFQmVWUUtBSHpKMkJRQUF3S3NNdUFBQUFBQUFBQUFBQUFBQUFPVFZKQUI0VVpVQUFBQ0FTeGh3QVFBQUFBQUFBQUFBQUFBQXlLdExBUENpSmdFQUFBQ1hNT0FDQUFBQUFBQUFBQUFBQUFDUVc1VUE0RmxHcmdBQUFMaUlBUmNBQUFBQUFBQUFBQUFBQUlEY2Rna0EvcVZLQUFBQXdLVU11QUFBQUFBQUFBQUFBQUFBQU5Ba0FQaU9jU3NBQUFBdVpzQUZBQUFBQUFBQUFBQUFBQUNBSmdHQU14RUFBSUFZQXk0QUFBQUFBQUFBQUFBQUFBRHNFZ0Q4clVrQUFBREFXL3puNGVGQkJRQUFBQUFBQUFBQUFBQUFBQUFBQUFDQWdDOFNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBREVHSEFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWd5NEFJQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUdUQUJRQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ3lJQUxBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQ1FBUmNBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQ0FETGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUVFaY0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQ0RMZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUVpjQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFDRExnQWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFRWk1BRkFBQUFBQUFBQUFBQUFBQUFBQUFBQUNESWdBc0FBQUFBQUFBQUFBQUFBQUFBQUFBQVFKQUJGd0FBQUFBQUFBQUFBQUFBQUFBQUFBQ0FJQU11QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJCQmx3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlJTXVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJCbHdBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlNdUFDQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkJrd0FVQUFBQUFBQUFBQUFBQUFBQUFBQUFBSU1pQUN3QUFBQUFBQUFBQUFBQUFBQUFBQUFCQWtBRVhBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQWdBeTRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUVHWEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ2d5NEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUdYQUJBQUFBQUFBQUFBQUFBQUFBZ1AreWM4Y0NBQUFBQUlQOHJlZXd1MEFDQUFDQVNlQUNBQUFBQUFBQUFBQUFBQUFBQUFBQUFEQUpYQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFKb0VMQUFBQUFBQUFBQUFBQUFBQUFBQUFBTUFrY0FFQUFBQUFBQUFBQUFBQUFBQUFBQUFBbUFRdUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDVHdBVUFBQUFBQUFBQUFBQUFBQUFBQUFBQVlCSzRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQk1BaGNBQUFBQUFBQUFBQUFBQUFBQUFBQUFnRW5nQWdBQUFBQUFBQUFBQUFBQUFBQUFBQUF3Q1Z3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNhQkN3QUFBQUFBQUFBQUFBQUFBQUFBQUFEQUpIQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFKZ0VMZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFrOEFGQUFBQUFBQUFBQUFBQUFBQUFBQUFBR0FTdUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBVEFJWEFBQUFBQUFBQUFBQUFBQUFBQUFBQUlCSjRBSUFBQUFBQUFBQUFBQUFBQUFBQUFBQU1BbGNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQW1nUXNBQUFBQUFBQUFBQUFBQUFBQUFBQUF3SlFBN04ySmpSdkhGb2JSMFdEeW9DSngweGxSRWJ6cUNOUWgzVllrNmtoa3lndWVsbG5JTzcxVWRaOERFQVlNeXpKK3NUd3NTdnhHd0FVQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUVuQUJRQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ1NjQUZBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQkp3QVVBQUFBQUFBQUFBQUFBQUFBQUFBQUFJRW5BQlFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnU2NBRkFBQUFBQUFBQUFBQUFBQUFBQUFBQUNCSndBVUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlFbkFCUUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdTY0FGQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0JKd0FVQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUVuQUJRQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ1NjQUZBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQkp3QVVBQUFBQUFBQUFBQUFBQUFBQUFBQUFJRW5BQlFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnU2NBRkFBQUFBQUFBQUFBQUFBQUFBQUFBQUNCSndBVUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlFbkFCUUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdTY0FGQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0JKd0FVQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUVuQUJRQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ1NjQUZBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQkp3QVVBQUFBQUFBQUFBQUFBQUFBQUFBQUFJRW5BQlFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnU2NBRkFBQUFBQUFBQUFBQUFBQUFBQUFBQUNCSndBVUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlFbkFCUUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdTY0FGQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0JKd0FVQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUVuQUJRQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ1NjQUZBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQkp3QVVBQUFBQUFBQUFBQUFBQUFBQUFBQUFJRW5BQlFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnU2NBRkFBQUFBQUFBQUFBQUFBQUFBQUFBQUNCSndBVUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlFbkFCUUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdTY0FGQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0JKd0FVQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUVuQUJRQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ1NjQUZBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQkp3QVVBQUFBQUFBQUFBQUFBQUFBQUFBQUFJRW5BQlFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnU2NBRkFBQUFBQUFBQUFBQUFBQUFBQUFBQUNCSndBVUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlFbkFCUUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdTY0FGQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0JKd0FVQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUVuQUJRQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ1NjQUZBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQkp3QVVBQUFBQUFBQUFBQUFBQUFBQUFBQUFJRW5BQlFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnU2NBRkFBQUFBQUFBQUFBQUFBQUFBQUFBQUNCSndBVUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlFbkFCUUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdTY0FGQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0JKd0FVQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUVuQUJRQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ1NjQUZBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQkp3QVVBQUFBQUFBQUFBQUFBQUFBQUFBQUFJRW5BQlFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnU2NBRkFBQUFBQUFBQUFBQUFBQUFBQUFBQUNCSndBVUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlPbkpCS3poNDZjdi83TUNBQUJRb1ppR2JqUkRHMDZYc2J2KzVXd0pBQUFBQURpMmFlaDZLNnpuZEhueGJYVHYyUUlBaC9YMTh4OWVrNUx5OGRNWEk3eVB6eVdBcjZ0QS9uV0lyNk1BQU80akxFekFoYlVVRXdBQUFKWGVWUVJjMm5GMnZ3UUFBQUFBcnZ3aHVqcWNIN3huQ3dCNFRRcXNmdzg1bXdGOFhRVlNpZ2tBQU54SFdOYWpDUUFBQUFBQUFBQUFBQUFBQUtoY21BQjJwNWdBQUFDQXZSQndBUUFBQUFBQUFBQUFXbEZNQUFBQWNGaStLelk0MXdBQUFGQXRBUmNBQUFBQUFBQUFBQUFBQUFCYUVDWUE1eGtBQUFCcUpPQUNBQUFBQUFBQUFBQzBJa3dBQUFEZ1hnZzR6d0FBQUZBYkFSY0FBQUFBQUFBQUFLQUowOUNOVmdBQUFEaTAzZ1RnUEFNQUFFQ05CRndBQUFBQUFBQUFBQUFBQUFCb1JURUJOQzlNQUFBQXdONEl1QUFBQUFBQUFBQUFBQzBvSmdBQUFPQkIrQUdjWXdBQUFLaVFnQXNBQUFBQUFBQUFBQUFBQUFDdEdFMEF6ZXROQUFBQXdONEl1QUFBQUFBQUFBQUFBQzBJRXdBQUFQQ3ZZZ0pvVnBnQUFBQ0FQUkp3QVFBQUFBQUFBQUFBcWpjTm5lK3dEZ0FBd0g5NkUwQ3p3Z1FBQUFEc2tZQUxBQUFBQUFBQUFBQUFBQUFBclFrVFFKTUVtQUFBQU5nbEFSY0FBQUFBQUFBQUFLQjJ4UVFBQUFEOElrd0F6aTBBQUFEVVFzQUZBQUFBQUFBQUFBQUFBQUNBMXZRbWdPWVVFd0FBQUxCWEFpNEFBQUFBQUFBQUFFRHR3Z1FBQUFBOG81Z0FtakthQUFBQWdMMFNjQUVBQUFBQUFBQUFBS28yRFowUDl3QUFBUENjTUFFMG81Z0FBQUNBUFJOd0FRQUFBQUFBQUFBQWFoWW1BQUFBNEFXQ245Q09NQUVBQUFCN0p1QUNBQUFBQUFBQUFBRFVMRXdBQUFEQUs0b0pvQW1DU3dBQUFPeWFnQXNBQUFBQUFBQUFBQUFBQUFDdENoTkE5WW9KQUFBQTJEc0JGd0FBQUFBQUFBQUFvRnJUMFBWV0FBQUE0QlhqZzRnTDFNNFpCUUFBWVBjRVhBQUFBQUFBQUFBQUFBQUFBR2habUFDcU5wb0FBQUNBdlJOd0FRQUFBQUFBQUFBQWFoVW1BQUFBNEFhOUNhQmF4UVFBQUFBY2dZQUxBQUFBQUFBQUFBQlFxekFCQUFBQTdwRGdiQUlBQUVEdEJGd0FBQUFBQUFBQUFJQmFoUWtBQUFDNFVURUJWR2swQVFBQUFFY2c0QUlBQUFBQUFBQUFBRlJwR2pvZjhBRUFBT0JXN3BCUW4ySUNBQUFBamtMQUJRQUFBQUFBQUFBQXFGR1lBQUFBZ0RzVkUwQlZlaE1BQUFCd0ZBSXVBQUFBQUFBQUFBQkFqY0lFQUFBQXVFdUM4d2dBQUFBdEVIQUJBQUFBQUFBQUFBQUFBQUJnRDhZSDBRaW9oYk1JQUFEQW9RaTRBQUFBQUFBQUFBQUExWm1HcnJjQ0FBQUFDV0VDcUlMM2RnQUFBRGdVQVJjQUFBQUFBQUFBQUFBQUFBRDJRalFDdGhjbUFBQUE0R2dFWEFBQUFBQUFBQUFBZ05vVUV3QUFBUEFPWVFKd0JnRUFBR0JOQWk0QUFBQUFBQUFBQUFBQUFBRHNTWmdBTnRXYkFBQUFnS01SY0FFQUFBQUFBQUFBQUtveURaMFArUUFBQVBBZTdwV3duVEFCQUFBQVJ5VGdBZ0FBQUFBQUFBQUFBQUFBd040VUU4QW13Z1FBQUFBY2tZQUxBQUFBQUFBQUFBQlFrMklDQUFBQVpoQW1nRTMwSmdBQUFPQ0lCRndBQUFBQUFBQUFBQUFBQUFEWW05RUVzTG93QVFBQUFFY2w0QUlBQUFBQUFBQUFBRlJqR2pyZnBSa0FBSUM1RkJPQU13Y0FBQUJyRUhBQkFBQUFBQUFBQUFBQUFBQmdqMFJDWVYyakNRQUFBRGdxQVJjQUFBQUFBQUFBQUtBV3hRUUFBQURNTEV3QXF5Z21BQUFBNE1nRVhBQUFBQUFBQUFBQUFBQUFBTmlyTUFFNGF3QUFBTEMwSnhNQUFBQUFBQUFBQUFBMW1JYXV0MEoxdnliUC92M1RaVFFPQUFEUWl1OTN6V0lHV0p3M0N3QUFBRGkwUnhNQUFBQUFBQUFBQUFBVkNCTUFBQUN3a0dJQ2NNWUFBQUJnU1FJdUFBQUFBQUFBQUFCQURjSUVBQUFBdUhPQ013WUFBQUF0RW5BQkFBQUFBQUFBQUFCcUVDWUFBQUJnSWFNSndCa0RBQUNBSlFtNEFBQUFBQUFBQUFBQW01dUd6Z2Q5QUFBQVdGSXhBVGhiQUFBQXNCUUJGd0FBQUFBQUFBQUFZR3RoQWdBQUFOdzl3ZGtDQUFDQVZnbTRBQUFBQUFBQUFBQUFXd3NUQUFBQXNMRFIvUk1XTzFzQUFBQndlQUl1QUFBQUFBQUFBQURBMXNJRUFBQUF1SDlDYzRvSkFBQUE0QjhDTGdBQUFBQUFBQUFBd0thbW9mT2RtZ0VBQUZoRGJ3S1lWWmdBQUFBQS9pSGdBZ0FBQUFBQUFBQUFiS21ZQUFBQWdCV0ZDV0Myc3lUS0N3QUFBUDhTY0FFQUFBQUFBQUFBQUFBQUFPQW9pZ2xnRm1FQ0FBQUErRDhCRndBQUFBQUFBQUFBWURQVDBQVldBQUFBWUVXakNXQVczdE1CQUFDQUh3aTRBQUFBQUFBQUFBQUFXd2tUQUFBQXNJRmlBbmlYTUFFQUFBRDhUTUFGQUFBQUFBQUFBQURZU3BnQUFBQUE5MUZ3aGdBQUFLQjFUeVlBQUFBQUFBQUFBQUEyMHA4dTR5TC80bW5vckFzQUFNQkx2bDlHNC9vNG13SlNlaE1BQUFEQXp4NU5BQUFBQUFBQUFBQUFBQUFBd01HRUNjRFpBUUFBZ0xrSXVBQUFBQUFBQUFBQUFGc29KZ0FBQUdCRHZRa2dKVXdBQUFBQXZ4TndBUUFBQUFBQUFBQUF0aEFtQUFBQXdOMFVtaU4rQkFBQUFNOFFjQUVBQUFBQUFBQUFBTFl3bWdBQUFJQ05oUW5BbVFFQUFJQTVDTGdBQUFBQUFBQUFBQUJyS3lZQUFBQ2dBcjBKNEM1aEFnQUFBSGllZ0FzQUFBQUFBQUFBQUxDMk1BRUFBQUNWS0NhQW00a2VBUUFBd0FzRVhBQUFBQUFBQUFBQWdMV05KZ0FBQUtBU1lRSzRTVEVCQUFBQXZFekFCUUFBQUFBQUFBQUFXRk9ZQUFBQWdJcUlqTUp0d2dRQUFBRHdNZ0VYQUFBQUFBQUFBQUJnVFdFQ0FBQUFLbE5NQUc4U093SUFBSUJYQ0xnQUFBQUFBQUFBQUFCcjZrMEFBQUNBdXlvMHBaZ0FBQUFBWGlmZ0FnQUFBQUFBQUFBQXJDVk1BQUFBZ0Rzck9COEFBQUN3TndJdUFBQUFBQUFBQUFEQVdzSUVBQUFBdUxOQ2MwWVRBQUFBd09zRVhBQUFBQUFBQUFBQWdMWDBKZ0FBQU1DZEZacFNUQUFBQUFCdkUzQUJBQUFBQUFBQUFBRFdFR3Y5Uk5QUVdSc0FBSUNNWWdMNFRaZ0FBQUFBM2liZ0FnQUFBQUFBQUFBQXJDRk1BQUFBZ0xzck5HYzBBUUFBQUx4TndBVUFBQUFBQUFBQUFGaERid0lBQUFBcUoxUUJQeXNtQUFBQWdOc0l1QUFBQUFBQUFBQUFBRXNySmdBQUFNQWRGcG9USmdBQUFJRGJDTGdBQUFBQUFBQUFBQUJMQ3hNQUFBRGdEZ3ZObllYUkRBQUFBSEFiQVJjQUFBQUFBQUFBQUdCcFB1d0RBQUJBUzNmWU1BTTRCd0FBQUhBUEFSY0FBQUFBQUFBQUFHQkp4UVFBQUFBMEprd0FENzBKQUFBQTRIWUNMZ0FBQUFBQUFBQUF3SkxDQkFBQUFEUkd1SUtqQ3hNQUFBREFmUVJjQUFBQUFBQUFBQUNBcGNUMU1ab0JBQUNBUnUrMDRQa1BBQUFBM09USkJBQUFBQUFBQUFBQXdFTENCQUFBQU5SZ0dycTcvdm5UWlN6dXRSejR2UFMvbkFlakFBQUF3QnNlVFFBQUFBQUFBQUFBQUN5a053RUFBQUF0bW9aT3NZS2pDaE1BQUFEQS9RUmNBQUFBQUFBQUFBQ0FKUlFUQUFBQTRHNEx6UWtUQUFBQXdQMEVYQUFBQUFBQUFBQUFnQ1hFRmovcE5IU1dCd0FBNERlbnk5ak0zUmEyTkExZFA4UFpBUUFBZ01NUmNBRUFBQUFBQUFBQUFPWVcxNGRQOXdBQUFOQzBhZWpHQnhFWGpzWHpIUUFBQUpJRVhBQUFBQUFBQUFBQWdMbUZDUUFBQUtqTjZaSnFqYnJqY2lTZTd3QUFBSkFrNEFJQUFBQUFBQUFBQU15dE53RUFBQUI3TUEyZE95NkhmYjRubzBjQUFBQndTQUl1QUFBQUFBQUFBQURBbklvSkFBQUEySmt3QVFkUVRBQUFBQUI1QWk0QUFBQUFBQUFBQU1DY3dnUUFBQURVNm5RWk16K3NXSTREaUJuT0NnQUFBQnlXZ0FzQUFBQUFBQUFBQURDWHVENTh1Z2NBQUlCZG1ZYk9YUmZQY3dBQUFPQlZBaTRBQUFBQUFBQUFBTUJjaWdrQUFBQnc1d1hQYndBQUFEZ2FBUmNBQUFBQUFBQUFBR0FPY1gxcytwMmFwNkh6cXdBQUFNQ2JUcGZVOVRVc3g0N0ZER2NFQUFBQURrM0FCUUFBQUFBQUFBQUFtRU9ZQUFBQWdMMmFoazdSQXM5dkFBQUE0RVVDTGdBQUFBQUFBQUFBd0J4NkV3QUFBTEJ6eFFSNFhnTUFBQURQZVRJQkFBQUFBQUFBQUFEd1RzVUVBQUFBdE9SMEdUTS9ySGNIWm9jaWVSNEFBQUNBSHp5YUFBQUFBQUFBQUFBQWVLZmVCQUFBQUJ4RW1JQ2RVVzhCQUFDQUdUeVpBQUFBQUFBQUFBQUFlSWZ5OWZNZmRmeVhmUDdtVjJNbEh6OTlNUUlBQU55cG1yc1Q3NzBQeGZVdlowdXdFOFVFQUFBQU1JOUhFd0FBQUFBQUFBQUFBTy9RbXdBQUFBRDNZR2hTbUFBQUFBRG1JZUFDQUFBQUFBQUFBQUJrRlJNQUFBRGdQZ3hOaXV0ak5BTUFBQURNUThBRkFBQUFBQUFBQUFESThsM0hBUUFBT0tJd0FaN0hBQUFBd0k4RVhBQUFBQUFBQUFBQWdJeGlBZ0FBQUE1cU5BRTdJTXdMQUFBQU14SndBUUFBQUFBQUFBQUFNbnpJQndBQWdDTXJKcUJoWVFJQUFBQ1lsNEFMQUFBQUFBQUFBQUJ3cjdNSkFBQUFPRGhoVTFvV0pnQUFBSUI1Q2JnQUFBQUFBQUFBQUFEM2lPdGpOQU1BQUFDSVlOQXNBU0lBQUFDWW1ZQUxBQUFBQUFBQUFBQndqMklDQUFBQStGdVlBTTliQUFBQTREc0JGd0FBQUFBQUFBQUE0RmJsK2hqTkFBQUFBSC9yVFVDRHdnUUFBQUF3UHdFWEFBQUFBQUFBQUFEZ1ZqNllCZ0FBQUQ4TEU5QVk3KzhBQUFEQUFnUmNBQUFBQUFBQUFBQ0FXNXhOQUFBQUFMOHBKcUFoWVFJQUFBQllob0FMQUFBQUFBQUFBQUR3bHJnK1JqTUFBQURBYjl5WGFVbVlBQUFBQUpZaDRBSUFBQUFBQUFBQUFMemxUeE1BQUFEQWk0b0phRVJ2QWdBQUFGaUdnQXNBQUFBQUFBQUFBUENhc3drQUFBRGdWV0VDR2xCTUFBQUFBTXNSY0FFQUFBQUFBQUFBQUY0UzE4ZG9CZ0FBQUhqVitDRGlRdjA4UndFQUFHQkJBaTRBQUFBQUFBQUFBTUJ6NHZyNDB3d0FBQUJ3OHowYWFpYlNDd0FBQUFzU2NBRUFBQUFBQUFBQUFKNGozZ0lBQUFDMzYwMUF4WW9KQUFBQVlGa0NMZ0FBQUFBQUFBQUF3Sy9PSmdBQUFJQzdoUW53M0FRQUFJQmpFbkFCQUFBQUFBQUFBQUIrZEw0K1JqTUFBQURBM1lvSnFKVDNlZ0FBQUdCaEFpNEFBQUFBQUFBQUFNQi96ZzgrMEFNQUFBQlo3dFRVcUpnQUFBQUFsdmZoMjdkdlZtRDVKOXFIRDBhQUNwd3VmajhBWUF2VDBCa0JBSER2Qk1DOUU4RHJXWUJkKy9yNUR5TWNqRDhQQkY3SEFuajlDeHpWeDA5ZmpBQytyb0t2WHdEY3hKL3RncnBwYlRDM1J4TUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFPUUl1QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFKQW00QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFrQ2JnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNRSnVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUpBbTRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWtDYmdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ1FKdUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSkFtNEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBa0NiZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFDUUp1QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFKQW00QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFrQ2JnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNRSnVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUpBbTRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWtDYmdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ1FKdUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSkFtNEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBa0NiZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFDUUp1QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFKQW00QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFrQ2JnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNRSnVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUpBbTRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWtDYmdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ1FKdUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSkFtNEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBa0NiZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFDUUp1QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFKQW00QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFrQ2JnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNROW1ZQTFuQzZqRVFBQXI0V0FUVTFEWndUL1B3VUE4RG9KQUFEQVhRUUFBQUFBQUdBVmZqOEY2dUF6UmF6bDBRUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEa0NMZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFTUUl1QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJKQWk0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVrQ0xnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVNRSXVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkpBaTRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRWtDTGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBU1FJdUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCSkFpNEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFa0NMZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFTUUl1QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJKQWk0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVrQ0xnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVNRSXVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkpBaTRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRWtDTGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBU1FJdS9NWGV2U0MzYldRQkZHMnF0QS9PU2tKd1I1b1ZUR01GNXBJZVp5WGhTanl0VUprb3NUNWtFNThHY0U3Vks3bjhrY0VIcFZ6dUdKY0FBQUFBQUFBQUFBQUFBQUFBQUFBQVFDVUJGd0FBQUFBQUFBQUFBQUFBQUFBQUFBQ0FTZ0l1QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNWQkZ3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNvSnVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVZCSndBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQ29KT0FDQUFBQUFBQUFBQUFBQUFBQUFBQUFBRkJKd0FVQUFBQUFBQUFBQUFBQUFBQUFBQUFBb0pLQUN3QUFBQUFBQUFBQUFBQUFBQUFBQUFCQUpRRVhBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQktBaTRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSlVFWEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBS2dtNEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCVUVuQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFLZ2s0QUlBQUFBQUFBQUFBQUFBQUFBQUFBQUFVRW5BQlFBQUFBQUFBQUFBQUFBQUFBQUFBQUNna29BTEFBQUFBQUFBQUFBQUFBQUFBQUFBQUVBbEFSY0FBQUFBQUFBQUFBQUFBQUFBQUFBQWdFb0NMZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFsUVJjQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFxQ2JnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUZRU2NBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQXFDVGdBZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQlFTY0FGQUFBQUFBQUFBQUFBQUFBQUFBQUFBS0NTZ0FzQUFBQUFBQUFBQUFBQUFBQUFBQUFBUUNVQkZ3QUFBQUFBQUFBQUFBQUFBQUFBQUFDQVNnSXVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ1ZCRndBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ29KdUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBVkJKd0FRQUFBQUFBQUFBQUFBQUFBQUFBQUFDb0pPQUNBQUFBQUFBQUFBQUFBQUFBQUFBQUFGQkp3QVVBQUFBQUFBQUFBQUFBQUFBQUFBQUFvSktBQ3dBQUFBQUFBQUFBQUFBQUFBQUFBQUJBSlFFWEFBQUFBQUFBQUFBQUFBQUFBQUFBQUlCS0FpNEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFKVUVYQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFLZ200QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJVRW5BQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUtnazRBSUFBQUFBQUFBQUFBQUFBQUFBQUFBQVVFbkFCUUFBQUFBQUFBQUFBQUFBQUFBQUFBQ2drb0FMQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUFsQVJjQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0VvQ0xnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWxRUmNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQXFDYmdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRlFTY0FFQUFBQUFBQUFBQUFBQUFBQUFBQUFBcUNUZ0FnQUFBQUFBQUFBQUFBQUFBQUFBQUFCUVNjQUZBQUFBQUFBQUFBQUFBQUFBQUFBQUFLQ1NnQXNBQUFBQUFBQUFBQUFBQUFBQUFBQUFRQ1VCRndBQUFBQUFBQUFBQUFBQUFBQUFBQUNBU2dJdUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDVkJGd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFDb0p1QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFWQkp3QVFBQUFBQUFBQUFBQUFBQUFBQUFBQUNvSk9BQ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUZCSndBVUFBQUFBQUFBQUFBQUFBQUFBQUFBQW9KS0FDd0FBQUFBQUFBQUFBQUFBQUFBQUFBQkFwV2NyWUNML3NRSUFBR0JPKzVmelI5OGRsOVBoYkR1TGNTalRXUU1BQUFEQXB2UldBTTF5WmdzQStMc0t3TEo0cm1OOFVjYS9Sd1A4T1FBQTBKaFBuaWw2NVp5UFFRbTRNSlZzQlFBQVFLTi9WL0UvekplajgvZExBQUFBZ0UzcHJBQ2EvMjgwV3dNQXNGRWU3QUNXeXQvanh0K3ZmNDhHK0RNQUFHQTVuUE14cUNjckFBQUFBQUFBQUFDZ01WM3lzQXNBQUFEQWtNSUtSdWZCUHdBQUFOZ3dBUmNBQUFBQUFBQUFBRnJTSmZFV0FBQUFnS0U1YnhsWFdBRUFBQUJzbTRBTEFBQUFBQUFBQUFBdGlDVGVBZ0FBQURDbWJBV2pDU3NBQUFDQWJSTndBUUFBQUFBQUFBQmdibEhtbU1SYkFBQUFBTWJVVzRIZEFnQUFBT01RY0FFQUFBQUFBQUFBWUU2UnJ2RVdBQUFBQU1ZWFZtQ25BQUFBd1BBRVhBQUFBQUFBQUFBQW1Fc2s4UllBQUFDQUtZVVZEQzViQVFBQUFDRGdBZ0FBQUFBQUFBREFITG9rM2dJQUFBQXd0ZDRLQm5lMkFnQUFBRURBQlFBQUFBQUFBQUNBcVhYSmd5MEFBQUFBY3drckdFeTJBZ0FBQU9DVmdBc0FBQUFBQUFBQUFGUHFrbmdMQUFBQXdKekNDdXdTQUFBQUdKYUFDd0FBQUFBQUFBQUFVNGd5dXlUZUFnQUFBREMzM2dvRzQ2d0xBQUFBK0lPQUN3QUFBQUFBQUFBQVk0c3lSMnNBQUFBQWFFYTJBanNFQUFBQWhpUGdBZ0FBQUFBQUFBREFtSElTYndFQUFBQm9UVmpCdzNvckFBQUFBUDcwYkFVQUFBQUFBQUFBQUl5a0szTzJCZ0FBQUlEbU9MTjVURmdCQUFBQThONlRGUUFBQUFBQUFBQUFNTEJJNGkwQUFBQUFyY3RXVUMyc0FBQUFBSGp2MlFvQUFBQUFBQUFBQUJoUWxEbGFBd0FBQUVEendncXE5VllBQUFBQXZQZGtCUUFBQUFBQUFBQUFEQ1FuOFJZQUFBQ0FwVGhiUVpXd0FnQUFBT0NmQkZ3QUFBQUFBQUFBQUJoQ2w3enpNQUFBQU1EU1pDdXdNd0FBQU9CeEFpNEFBQUFBQUFBQUFEd2kwalhlNGgyYkFRQUFBSlpIa1BkK3pzRUFBQUNBWHdpNEFBQUFBQUFBQUFCUUs4b2NrNGRXQUFBQUFKWXNyT0JtMlFvQUFBQ0Fqd2k0QUFBQUFBQUFBQUJRSTZkcnZBVUFBQUNBWlFzcnNDc0FBQURnTVFJdUFBQUFBQUFBQUFEY3F5dlRXd01BQUFEQUtqam51ZDNaQ2dBQUFJQ1BDTGdBQUFBQUFBQUFBSENyS0xOTEhsUUJBQUFBV0p1d2dtOWxLd0FBQUFBK0krQUNBQUFBQUFBQUFNQXRjcG1qTlFBQUFBQ3NVbGpCdDNvckFBQUFBRDRqNEFJQUFBQUFBQUFBd0hlNjVBRVZBQUFBZ0RWejl2TzFzQUlBQUFEZ0t3SXVBQUFBQUFBQUFBQjhKc3JzeXB5dEFnQUFBR0Qxc2hWOEtxd0FBQUFBK0lxQUN3QUFBQUFBQUFBQUg4bGxqdFlBQUFBQXNCbGhCWi9xclFBQUFBRDR5ck1WQUFBQUFBQUFBQUR3RDEyWnN6VUFBQUFBYklyem9JK0ZGUUFBQUFEZmViSUNBQUFBQUFBQUFBRGVSSmxkOHJBT0FBQUF3RlpsSy9oRldBRUFBQUR3SFFFWEFBQUFBQUFBQUFCZTVUSkhhd0FBQUFEWXRMQ0NYL1JXQUFBQUFIeEh3QVVBQUFBQUFBQUFZTnVpVEpjOGlBSUFBQUJBU21jcitKdHNCUUFBQU1BdEJGd0FBQUFBQUFBQUFMWXJ5aHlUQjNNQUFBQUErRXUyZ3Y4TEt3QUFBQUJ1SWVBQ0FBQUFBQUFBQUxCTlhickdXd0FBQUFEZ3ZkNEsvay80R0FBQUFMaUpnQXNBQUFBQUFBQUF3TFpFbVYzeThBa0FBQUFBbndzclNOa0tBQUFBZ0ZzSnVBQUFBQUFBQUFBQWJFY3VjN1FHQUFBQUFMNFJWbUFIQUFBQXdPMEVYQUFBQUFBQUFBQUExaS9LZEdWNnF3QUFBQURnQmxzL1I0b3laMThHQUFBQXdLMEVYQUFBQUFBQUFBQUExaTJYT1NZUG5BQUFBQUJ3bi9EYUFRQUFBRzRqNEFJQUFBQUFBQUFBc0U1UnBrdmVMUmtBQUFDQU9ubkRyOTJaR2dBQUFIQ1haeXNBQUFBQUFBQUFBRmlkbkR4a0FnQUFBTUJqemh0OTNlSFdBd0FBQVBjU2NBRUFBQUFBQUFBQVdJOUkxM2pMMlNyYWN6a2QxdnZpZnZ4MGd3RUFBR0NkOHR0c1NianRBQUFBd0wyZXJBQUFBQUFBQUFBQVlCVnltV01TYjJuVy9zV3RBUUFBQUJZbk52aWFlN2NkQUFBQXVKZUFDd0FBQUFBQUFBREFza1daTG5td0JBQUFBSURoYmExSW05MXlBQUFBb0lhQUN3QUFBQUFBQUFEQWN1VXl4N1M5QjJrV2EvL2lWZ0VBQUFDTGt6ZjBXc1B0QmdBQUFHb0l1QUFBQUFBQUFBQUFMRStVNmNyMFZyRThJaTRBQUFEQXdzU0dYcXVER3dBQUFLQ0tnQXNBQUFBQUFBQUF3TExrTXNma1lSSUFBQUFBcHZGNkRoVWJlSjNaclFZQUFBQnFDYmdBQUFBQUFBQUFBQ3hEbE9uSzlGYXhmUHNYL1IwQUFBQmdVY0pyQkFBQUFQaWNnQXNBQUFBQUFBQUFRUHR5bVdPNnZ0c3hLeUhpQWdBQUFDekkycVBDa1p5OUFRQUFBQThRY0FFQUFBQUFBQUFBYUZlVTJhWDFQeUN6V1NJdUFBQUF3SUtFMXdZQUFBRHdNUUVYQUFBQUFBQUFBSUEyZFdXTzFnQUFBQUJBSTJMRnIwMUFHUUFBQUhpSWdBc0FBQUFBQUFBQVFGdHltVjJaczFWc3cvN0ZyUVlBQUFBV1lhMlJrM0JyQVFBQWdFY0p1QUFBQUFBQUFBQUF0Q0hLZE1tNy9XNlNpQXNBQUFDd0VPRTFBUUFBQVB6cTJRb0FBQUFBQUFBQUFHYlhsVkh3QUFBQUFLQjFPYTB2ZUNLb0RBQUFBRHpzeVFvQUFBQUFBQUFBQUdZVFpYWkp2SVZpLytMTEFBQUFBR2plMmc0d3Nsc0tBQUFBREVIQUJRQUFBQUFBQUFCZ2VsR21LM08wQ3Q0VGNRRUFBQUFXSUsvb3RZVGJDUUFBQUF6aDJRb0FBQUFBQUFBQUFDYVZ5L1RXd0dmdWpiaGNUZ2RMQXdBQUFLWVVLM290YXJvQUFBREFJQVJjQUFBQUFBQUFBQUNta1pOd0N3TVRid0VBQUFCbXNKYm9TWFlyQVFBQWdLRThXUUVBQUFBQUFBQUF3S2lpVEpmRVd3QUFBQUJZajd5QzF4QnVJd0FBQURDVVp5c0FBQUFBQUFBQUFCaE5sOWJ6anNRMDVuSTZXQUlBQUFBd2wxakI5VHUzQXdBQUFBYnpaQVVBQUFBQUFBQUFBSVBMWlhiSlF5QUFBQUFBck5QcnVWY3MrUHJETFFRQUFBQ0dKT0FDQUFBQUFBQUFBRENjU05kd1MyOFZBQUFBQUt4Y0xQamFuZDhCQUFBQWd4SndBUUFBQUFBQUFBQjRYSlRweWh5dGdpbGNUZ2RMQUFBQUFPYTIxQWhLdUhVQUFBREEwQVJjQUFBQUFBQUFBQURxUmZvcjNISzJEZ0FBQUFBMkpsd3pBQUFBZ0lBTEFBQUFBQUFBQUVDdG5JUmJtTUhsZExBRUFBQUFvQld4d0d2dTNUWUFBQUJnYUFJdUFBQUFBQUFBQUFEM3lXVjJ5WU1lQUFBQUFMQzBNN0xzbGdFQUFBQmpFSEFCQUFBQUFBQUFBTGhOVHNJdHpPeHlPbGdDQUFBQTBKcHdyUUFBQU1EV0NiZ0FBQUFBQUFBQUFId3RrbkFMQUFBQUFId21MK2hhejI0WEFBQUFNQVlCRndBQUFBQUFBQUNBajBXWnJzelJLZ0FBQUFEZ1UwdUpvbVMzQ2dBQUFCaUxnQXNBQUFBQUFBQUF3TjlGK2l2YzRoMTVhY3IreFpja0FBQUEwS1M4Z0dzTXR3a0FBQUFZeTdNVkFBQUFBQUFBQUFEOElkTDFRUk9GREFBQUFBQzRUeXpnK3B6N0FRQUFBS041c2dJQUFBQUFBQUFBWU9PaVRGZm1tRHpFd1FMc1gzeVpBZ0FBQU0xcC9jQWkzQ0lBQUFCZ1RBSXVBQUFBQUFBQUFNQldSUkp1QVFBQUFJQ2g1SWF2clhkN0FBQUFnREVKdUFBQUFBQUFBQUFBV3hOSnVJV0YyNy80MGdVQUFBQ2FFNjRMQUFBQTJDb0JGd0FBQUFBQUFBQmdLeUlKdHdBQUFBREFXRjdQM0tMQjZ3cTNCZ0FBQUJpYmdBc0FBQUFBQUFBQXNIYVJoRnRZb2YyTEwyY0FBQUNnT2RIZ05mVnVDd0FBQURBMkFSY0FBQUFBQUFBQVlLMGlDYmNBQUFBQXdKUmFpNlZrdHdRQUFBQ1lnb0FMQUFBQUFBQUFBTEEya1lSYjJJajlpeTl4QUFBQW9EbmhXZ0FBQUlDdGViWUNBQUFBQUFBQUFHQWxjcm8ra0tGb0FRQUFBQUR6aVhRTkxMZkFXU0VBQUFBd0NRRVhBQUFBQUFBQUFHRHBjcG5lR2xpRHkrbGdDUUFBQUVDVDdqaTM2UGN2NTl6QUplZXZycmxjbzVzS0FBQUFET2JKQ2dBQUFBQUFBQUNBaGNwbGRrbThCUUFBQUFCR2QyZndKQnE0NUhEWEFBQUFnS2tJdUFBQUFBQUFBQUFBU3hKbHVpVGN3Z3JkOFM3V0FBQUFBSzNMTS8vK2NUa2RQaTNPM0JtakFRQUFBUGlXZ0FzQUFBQUFBQUFBc0FTUnJ1R1dZeGxQVjdBNjRpMEFBQURBbW53VlQ1bEl1QXNBQUFEQWxBUmNBQUFBQUFBQUFJQ1c1VEs3Sk53Q0FBQUFBTFBidjl4MVJKZm51czdMNmRDN1d3QUFBTUNVbnEwQUFBQUFBQUFBQUdoTXZJMkhMTmlFeStsZ0NRQUFBTUFhUll1Lzc1MFJHZ0FBQUlDYlBGa0JBQUFBQUFBQUFOQ0lLTk9WT1NieEZqWkN2QVVBQUFCWXE4dnBNRmNwSld3ZkFBQUFtSnFBQ3dBQUFBQUFBQUF3dDF4bWw2N2hGbTkvQ3dBQUFBQU4yNy9jZFlTWHA3Nit5K2tnRGcwQUFBQk03dGtLQUFBQUFBQUFBSUFaUkxvK3ZDSFl3bVpkVGdkTEFBQUFBTll1SnY3OThsYy9lR2Q4QmdBQUFPQm1UMVlBQUFBQUFBQUFBRXdvbDltVk9TYnhGalpNdkFVQUFBRFlnc3ZwOEhvR0dCUCtsbUhyQUFBQXdCd0VYQUFBQUFBQUFBQ0FzVVdaTGwzRExiMTFBQUFBQU1DeTdWL3VhalBIVk5mMUZvd0JBQUFBbUp5QUN3QUFBQUFBQUFBd2xweXUwWlpqR1E5T3dKdkw2V0FKQUFBQXdHWmNUb2Vwb3M3NXF4KzhNem9EQUFBQWNKZG5Ld0FBQUFBQUFBQUFCcFRMeE84L2Z2TTBCSHpteDA4N0FBQUFnSVg2L2Nkdmx2Q25PODQ0L3ZYdi8wYjUwSTE4UmZIenAzTVhBQUFBWUI1UFZnQUFBQUFBQUFBQVBDalNOZHl5Sy9QNmJycmlMUUFBQUFEQWV6SDI1NytjRHM0bEFRQUFnTms4V3dFQUFBQUFBQUFBVUNIZXByY0tBQUFBQU9BYnIrZUllY1RQSC9zWC9SWUFBQUJnUGdJdUFBQUFBQUFBQU1BOWNycUdXendOQVFBQUFBRGNJNmZ4SWk1QzB3QUFBTUNzQkZ3QUFBQUFBQUFBZ08va0pOb0NBQUFBQUR3bUZ2WjVBUUFBQUc0bTRBSUFBQUFBQUFBQWZDUW4wUllBQUFBQVlEaGpuVFdHMVFJQUFBQnplN0lDQUFBQUFBQUFBT0JOTHRPVjJaWHBrM2dMQUFBQUFEQ3NQTUxuN0swVkFBQUFtTnV6RlFBQUFBQUFBQURBcHVWMGZZZGFzUllBQUFBQVlHd3g4T2ZMVmdvQUFBQzBRTUFGQUFBQUFBQUFBTFlsM28xb0N3QUFBQUF3cGFIUEpNTktBUUFBZ0JZSXVBQUFBQUFBQUFEQStzWGI5RllCQUFBQUFNd3N2ODBRUktvQkFBQ0FKZ2k0QUFBQUFBQUFBTUE2NVhTTnRuaUFBUUFBQUFCb3lXdG9PZy93ZWJKVkFnQUFBSzBRY0FFQUFBQUFBQUNBZFlpMzZhMENBQUFBQUdoY2xPa0crQndBQUFBQVRSQndBUUFBQUFBQUFJQmxpbmR6dGc0QUFBQUFZRUVpUFI1d2NTNEtBQUFBTkVQQUJRQUFBQUFBQUFDV0k3OTk3SzBDQUFBQUFGaXcxelBPL01DdnoxWUlBQUFBdEVUQUJRQUFBQUFBQUFEYWxkOCtDcllBQUFBQUFHc1RaYnJLWCt2TUZBQUFBR2lLZ0FzQUFBQUFBQUFBdENIZTVwV0hEd0FBQUFDQXRZdFVGM0FKcXdNQUFBQmFJK0FDQUFBQUFBQUFBUFBJYngranpOazZBQUFBQUlDTmVRMVo1NHBmRjFZSEFBQUF0RWJBQlFBQUFBQUFBQURHRittdmh3cDY2d0FBQUFBQStFTk85MGRjbkxFQ0FBQUF6UkZ3QVFBQUFBQUFBSUJoUlJKckFRQUFBQUM0Ull6ODh3RUFBQUFtSWVBQ0FBQUFBQUFBQVBYeTI4Y29jN1lPQUFBQUFJQzczSHV1bXEwTUFBQUFhSkdBQ3dBQUFBQUFBQUI4TDcvN2RtOGRBQUFBQUFDRHllbjJNSXVRTmdBQUFOQWtBUmNBQUFBQUFBQUF1TXJ2dmgzSmd3QUFBQUFBQUZPSUczOWV0aW9BQUFDZ1ZRSXVBQUFBQUFBQUFHeEJwRjhmQXVpdEJRQUFBQUJnZHJmR3RNT3FBQUFBZ0ZZSnVBQUFBQUFBQUFDd1pQbVQ3KzkvLy9HYjdRQUFBQUFBTEVOT241LzMvdWxzVFFBQUFFQ3JCRndBQUFBQUFBQUFHRk4rOE5kSDhvL3lBUUFBQUFEV3J2L2l4N3AwUFNzR0FBQUFhTmJ1NTgrZnRnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVVPSEpDZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUE2Z2k0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJVRW5BQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUtnazRBSUFBQUFBQUFBQUFBQUFBQUFBQUFBQVVFbkFCUUFBQUFBQUFBQUFBQUFBQUFBQUFBQ2drb0FMQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUFsQVJjQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0VvQ0xnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWxRUmNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQXFDYmdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRlFTY0FFQUFBQUFBQUFBQUFBQUFBQUFBQUFBcUNUZ0FnQUFBQUFBQUFBQUFBQUFBQUFBQUFCUVNjQUZBQUFBQUFBQUFBQUFBQUFBQUFBQUFLQ1NnQXNBQUFBQUFBQUFBQUFBQUFBQUFBQUFRQ1VCRndBQUFBQUFBQUFBQUFBQUFBQUFBQUNBU2dJdUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDVkJGd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFDb0p1QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFWQkp3QVFBQUFBQUFBQUFBQUFBQUFBQUFBQUNvSk9BQ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUZCSndBVUFBQUFBQUFBQUFBQUFBQUFBQUFBQW9KS0FDd0FBQUFBQUFBQUFBQUFBQUFBQUFBQkFKUUVYQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUJLQWk0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUpVRVhBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUtnbTRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQlVFbkFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBS2drNEFJQUFBQUFBQUFBQUFBQUFBQUFBQUFBVUVuQUJRQUFBQUFBQUFBQUFBQUFBQUFBQUFDZ2tvQUxBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQWxBUmNBQUFBQUFBQUFBQUFBQUFBQUFBQUFnRW9DTGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBbFFSY0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBcUNiZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFGUVNjQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFxQ1RnQWdBQUFBQUFBQUFBQUFBQUFBQUFBQUJRU2NBRkFBQUFBQUFBQUFBQUFBQUFBQUFBQUtDU2dBc0FBQUFBQUFBQUFBQUFBQUFBQUFBQVFDVUJGd0FBQUFBQUFBQUFBQUFBQUFBQUFBQ0FTZ0l1QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNWQkZ3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNvSnVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVZCSndBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQ29KT0FDQUFBQUFBQUFBQUFBQUFBQUFBQUFBRkJKd0FVQUFBQUFBQUFBQUFBQUFBQUFBQUFBb0pLQUN3QUFBQUFBQUFBQUFBQUFBQUFBQUFCQUpRRVhBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQktBaTRBQUFBQUFBQUFBQUFBQUFBQUFBQUE4RDkyN2xnQUFBQUFZSkMvOVJ4MkYwZ3dDVndBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ2FCQ3dBQUFBQUFBQUFBQUFBQUFBQUFBQURBSkhBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUpnRUxnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWs4QUZBQUFBQUFBQUFBQUFBQUFBQUFBQUFHQVN1QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFUQUlYQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUJKNEFJQUFBQUFBQUFBQUFBQUFBQUFBQUFBTUFsY0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBbWdRc0FBQUFBQUFBQUFBQUFBQUFBQUFBQXdDUndBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQ1lCQzRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSlBBQlFBQUFBQUFBQUFBQUFBQUFBQUFBQUJnRXJnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUV3Q0Z3QUFBQUFBQUFBQUFBQUFBQUFBQUFDQVNlQUNBQUFBQUFBQUFBQUFBQUFBQUFBQUFEQUpYQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFKb0VMQUFBQUFBQUFBQUFBQUFBQUFBQUFBTUFrY0FFQUFBQUFBQUFBQUFBQUFBQUFBQUFBbUFRdUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDVHdBVUFBQUFBQUFBQUFBQUFBQUFBQUFBQVlCSzRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQk1DZERPSFFzQUFBQUFEUEszbnNQdUFrbmdBZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQXdDVndBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ2FCQ3dBQUFBQUFBQUFBQUFBQUFBQUFBQURBSkhBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUpnRUxnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWs4QUZBQUFBQUFBQUFBQUFBQUFBQUFBQUFHQVN1QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFUQUlYQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUJKNEFJQUFBQUFBQUFBQUFBQUFBQUFBQUFBTUFsY0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBbWdRc0FBQUFBQUFBQUFBQUFBQUFBQUFBQXdDUndBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQ1lCQzRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSlBBQlFBQUFBQUFBQUFBQUFBQUFBQUFBQUJnRXJnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUV3Q0Z3QUFBQUFBQUFBQUFBQUFBQUFBQUFDQVNlQUNBQUFBQUFBQUFBQUFBQUFBQUFBQUFEQUpYQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFKb0VMQUFBQUFBQUFBQUFBQUFBQUFBQUFBTUFrY0FFQUFBQUFBQUFBQUFBQUFBQUFBQUFBbUFRdUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDVHdBVUFBQUFBQUFBQUFBQUFBQUFBQUFBQVlCSzRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQk1BaGNBQUFBQUFBQUFBQUFBQUFBQUFBQUFnRW5nQWdBQUFBQUFBQUFBQUFBQUFBQUFBQUF3Q1Z3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNhQkN3QUFBQUFBQUFBQUFBQUFBQUFBQUFEQUpIQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFKZ0VMZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFrOEFGQUFBQUFBQUFBQUFBQUFBQUFBQUFBR0FTdUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBVEFJWEFBQUFBQUFBQUFBQUFBQUFBQUFBQUlCSjRBSUFBQUFBQUFBQUFBQUFBQUFBQUFBQU1BbGNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQW1nUXNBQUFBQUFBQUFBQUFBQUFBQUFBQUF3Q1J3QVFBQUFBQUFBQUFBQUFBQUFBQUFBQUNZQkM0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUpQQUJRQUFBQUFBQUFBQUFBQUFBQUFBQUFCZ0VyZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFFd0NGd0FBQUFBQUFBQUFBQUFBQUFBQUFBQ0FTZUFDQUFBQUFBQUFBQUFBQUFBQUFBQUFBREFKWEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSm9FTEFBQUFBQUFBQUFBQUFBQUFBQUFBQU1Ba2NBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQW1BUXVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ1R3QVVBQUFBQUFBQUFBQUFBQUFBQUFBQUFZQks0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJNQWhjQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0VuZ0FnQUFBQUFBQUFBQUFBQUFBQUFBQUFBd0NWd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFDYUJDd0FBQUFBQUFBQUFBQUFBQUFBQUFBREFKSEFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBSmdFTGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBazhBRkFBQUFBQUFBQUFBQUFBQUFBQUFBQUdBU3VBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVRBSVhBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQko0QUlBQUFBQUFBQUFBQUFBQUFBQUFBQUFNQWxjQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFtZ1FzQUFBQUFBQUFBQUFBQUFBQUFBQUFBd0NSd0FRQUFBQUFBQUFBQUFBQUFBQUFBQUFDWUJDNEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFKUEFCUUFBQUFBQUFBQUFBQUFBQUFBQUFBQmdFcmdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRXdDRndBQUFBQUFBQUFBQUFBQUFBQUFBQUNBU2VBQ0FBQUFBQUFBQUFBQUFBQUFBQUFBQURBSlhBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUpvRUxBQUFBQUFBQUFBQUFBQUFBQUFBQUFNQWtjQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFtQUpERFdHWm1sd1lhZ0FBQUFCSlJVNUVya0pnZ2p3aFJFOURWRmxRUlNCSVZFMU1QanhvZEcxc0NteGhibWM5SW1WdUxWVlRJaUJ3Y21WbWFYZzlJbTluT2lCb2RIUndPaTh2YjJkd0xtMWxMMjV6SXlJK1BHaGxZV1ErSUR4elkzSnBjSFFnWVhONWJtTWdjM0pqUFNJdkwzQmhaMlZoWkRJdVoyOXZaMnhsYzNsdVpHbGpZWFJwYjI0dVkyOXRMM0JoWjJWaFpDOXFjeTloWkhOaWVXZHZiMmRzWlM1cWN5SStQQzl6WTNKcGNIUStJRHh6WTNKcGNIUStLR0ZrYzJKNVoyOXZaMnhsUFhkcGJtUnZkeTVoWkhOaWVXZHZiMmRzWlh4OFcxMHBMbkIxYzJnb2UyZHZiMmRzWlY5aFpGOWpiR2xsYm5RNkltTmhMWEIxWWkwME1UTXpNVGsxTnpVMk56ZzVPVE16SWl4bGJtRmliR1ZmY0dGblpWOXNaWFpsYkY5aFpITTZkSEoxWlgwcE96d3ZjMk55YVhCMFBpQThiV1YwWVFwb2RIUndMV1Z4ZFdsMlBTSkRiMjUwWlc1MExWUjVjR1VpSUdOdmJuUmxiblE5SW5SbGVIUXZhSFJ0YkRzZ1kyaGhjbk5sZEQxVlZFWXRPQ0lnTHo0OGJXVjBZUXB1WVcxbFBTZDJhV1YzY0c5eWRDY2dZMjl1ZEdWdWREMG5kMmxrZEdnOVpHVjJhV05sTFhkcFpIUm9MQ0JwYm1sMGFXRnNMWE5qWVd4bFBURXNJRzFoZUdsdGRXMHRjMk5oYkdVOU1Td2dkWE5sY2kxelkyRnNZV0pzWlQxdWJ5d2diV2x1YVcxaGJDMTFhU2NnTHo0OElTMHRXMmxtSUVsRlhUNGdQSE5qY21sd2RDQnpjbU05SW1oMGRIQnpPaTh2ZDNkM0xuQnVaM0JwZUM1amIyMHZkM0F0WTI5dWRHVnVkQzkwYUdWdFpYTXZjRzVuY0dsNEwycHpMMmgwYld3MUxtcHpJajQ4TDNOamNtbHdkRDRnUENGYlpXNWthV1pkTFMwK1BHeHBibXNLY21Wc1BTSmhiSFJsY201aGRHVWlJSFI1Y0dVOUltRndjR3hwWTJGMGFXOXVMM0p6Y3l0NGJXd2lJSFJwZEd4bFBTSlFibWRRYVhnZ1VsTlRJRVpsWldRaUlHaHlaV1k5SW1oMGRIQnpPaTh2ZDNkM0xuQnVaM0JwZUM1amIyMHZabVZsWkNJZ0x6NDhiR2x1YXdweVpXdzlJbkJwYm1kaVlXTnJJaUJvY21WbVBTSm9kSFJ3Y3pvdkwzZDNkeTV3Ym1kd2FYZ3VZMjl0TDNodGJISndZeTV3YUhBaUlDOCtQR3hwYm1zS2NtVnNQU0p6YUc5eWRHTjFkQ0JwWTI5dUlpQjBlWEJsUFNKcGJXRm5aUzl3Ym1jaUlHaHlaV1k5SW1oMGRIQTZMeTkzZDNjdWNHNW5jR2w0TG1OdmJTOTNjQzFqYjI1MFpXNTBMM1Z3Ykc5aFpITXZNakF4Tmk4d05pOW1ZWFpwWTI5dUxuQnVaeUl2UGp4emRIbHNaU0IwZVhCbFBTSjBaWGgwTDJOemN5SSthSFJ0YkFwaWIyUjVlMkpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJMFkxUmpWR05TRnBiWEJ2Y25SaGJuUjlMbVp5YjI1MExXOTJaWEpzWVhrdFkyOXVkR1Z1ZEh0aVlXTnJaM0p2ZFc1a09uVnliQ2hvZEhSd09pOHZkM2QzTG5CdVozQnBlQzVqYjIwdmQzQXRZMjl1ZEdWdWRDOTBhR1Z0WlhNdmNHNW5jR2w0TDJsdFlXZGxjeTlpWnk1cWNHY3BmUzVsYm5SeWVTQndJR0VzSUM1dmJtVmZhR0ZzWmlCaExDQXViMjVsWDJoaGJHWmZiR0Z6ZENCaExDNXZibVZmZEdocGNtUWdZU3d1YjI1bFgzUm9hWEprWDJ4aGMzUWdZU3d1YjI1bFgyWnZkWEowYUNCaExDNXZibVZmWm05MWNuUm9YMnhoYzNRZ1lTd3VZbTk0YVc1bWJ5QmhMQ0F1WW05NGMzVmpZMlZ6SUdFc0lDNWliM2hsY25KdmNpQmhMQ0F1WW05NGJtOTBhV05sQ21GN1kyOXNiM0k2STBaR1JpQWhhVzF3YjNKMFlXNTBmUzVsYm5SeWVTQndJR0VzSUM1dmJtVmZhR0ZzWmlCaExDQXViMjVsWDJoaGJHWmZiR0Z6ZENCaExDQXViMjVsWDNSb2FYSmtJR0VzSUM1dmJtVmZkR2hwY21SZmJHRnpkQ0JoTENBdWIyNWxYMlp2ZFhKMGFDQmhMQ0F1YjI1bFgyWnZkWEowYUY5c1lYTjBJR0VzSUM1aWIzaHBibVp2SUdFc0lDNWliM2h6ZFdOalpYTWdZU3dnTG1KdmVHVnljbTl5SUdFc0lDNWliM2h1YjNScFkyVUtZWHRpWVdOclozSnZkVzVrTFdOdmJHOXlPaU5sTkRNM05tUWdJV2x0Y0c5eWRHRnVkSDB1ZEc5d0xYTnZZMmxoYkNCc2FTQmhMQ0F1YldWdWRTMWpZWFJsWjI5eWFXVnpJQzVxY1hWbGNubGpjM050Wlc1MUlIVnNJR3hwTG0xdmNtVWdQaUJoTENBamFXNW1jMk55TFd4dllXUnBibWNnYzNCaGJpd2dMbkppTFdWNGNHVnlhV1Z1WTJVdGNtRjBhVzVuTENCa2FYWXVabVZsWkMxcGJtWnZJR2tzSUM1aGNuUnBZMnhsWDJ4cGMzUWdiR2tnTG1GdUxXUnBjM0JzWVhrdFlYVjBhRzl5SUdFc0lIVnNMbUZ5ZEdsamJHVmZiR2x6ZENBdVlXNHRkMmxrWjJWMExYUnBkR3hsSUdrc0lDNTNhV1JuWlhSZllXNTBhR1Z0WlhOZlkyRjBaV2R2Y21sbGN5QnNhU3dnWkdsMkxuUmhaMk5zYjNWa0lITndZVzRzSUM1M2FXUm5aWFJmWVhKamFHbDJaU0JzYVN3Z0xuZHBaR2RsZEY5dFpYUmhJR3hwTENBamJXTlVZV2ROWVhBZ0xuUmhaMmx1WkdWNElHZzBMQ0FqYzJOZmJXTlVZV2ROWVhBZ0xuUmhaMmx1WkdWNElHZzBMQ0IxYkM1bWIyOTBaWEl0YzI5amFXRnNJR3hwSUdFc0lHRTZhRzkyWlhJc0lDNTBjbTl3YUhrdFptVmhkSFZ5WldRZ2FTd2dkV3d1WjNKcFpGOXNhWE4wSUM1amIyNTBaVzUwSUdFNmFHOTJaWElLYURKN1kyOXNiM0k2STJVME16YzJaQ0FoYVcxd2IzSjBZVzUwZlM1amRYTjBiMjB0WkhKdmNHUnZkMjR0TFhkb2FYUmxPanBpWldadmNtVXNJR2x1Y0hWMExtRndMV1p2Y20wdGMzVmliV2wwTFdKMWRIUnZiaXdnTG5kd0xYQmhaMlZ1WVhacElHRTZhRzkyWlhJc0lDNTNjQzF3WVdkbGJtRjJhU0J6Y0dGdUxtTjFjbkpsYm5Rc0lDNWxiblJ5ZVMxaWRHNHNJQzV0ZVMxd1lXZHBibUYwWldRdGNHOXpkSE1nYzNCaGJpd2dJMjVsZDNOc1pYUjBaWEl0Wm05eWJTQnBibkIxZEM1dVpYZHpiR1YwZEdWeUxXSjBiaXdnSTJOdmJuUmhZM1JtYjNKdElDNXpaVzVrWlcxaGFXd3NJQ05pWVdOckxYUnZjQ0J6Y0dGdUxDQWpjMlZoY21Ob1ptOXliVElnTG1KMWRIUnZibWxqYjI0c0lIVnNMbTEyWDJ4cGMzUmZjMjFoYkd3Z2JHa2dhRE1nYzNCaGJpd2dJM1JoWW5NZ2JHa3VZV04wYVhabElHRXNJQ04wWVdKeklHeHBMbUZqZEdsMlpTQmhPbWh2ZG1WeUxDQWpkR0ZpY3pJZ2JHa3VZV04wYVhabE1pQmhMQ0FqZEdGaWN6SWdiR2t1WVdOMGFYWmxNaUJoT21odmRtVnllMkpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJMlUwTXpjMlpDQWhhVzF3YjNKMFlXNTBmUzVxY1hWbGNubGpjM050Wlc1MUlIVnNJR3hwSUQ0Z1lUcGhablJsY2l3Z0xtRnlZMmhwZG1VdGFHVmhaR1Z5SUdnek9tRm1kR1Z5TENCa2FYWXVaVzUwY25rdFpYaGpaWEp3ZERwaFpuUmxjaXdnYURNdWQybGtaMlYwTFhScGRHeGxPbUZtZEdWeUxDQXVjbUl0Y21WemRXMWxMV0pzYjJOcklDNXlZaTFsZUhCbGNtbGxibU5sSUM1eVlpMXpaV04wYVc5dUxYUnBkR3hsT21GbWRHVnlMQ0F1Y21JdGNtVnpkVzFsTFdKc2IyTnJJQzV5WWkxbGVIQmxjbWxsYm1ObExXbDBaVzBnTG5KaUxYSnBaMmgwSUhBNllXWjBaWEo3WW1GamEyZHliM1Z1WkRwdWIyNWxJSEpsY0dWaGRDQnpZM0p2Ykd3Z01DVWdNQ1VnSTJVME16YzJaQ0FoYVcxd2IzSjBZVzUwZlNOdFkxUmhaMDFoY0NBdWRHRm5hVzVrWlhnZ2FEUXNJQ056WTE5dFkxUmhaMDFoY0NBdWRHRm5hVzVrWlhnS2FEUjdZbTl5WkdWeUxXSnZkSFJ2YlRvMWNIZ2djMjlzYVdRZ0kyVTBNemMyWkNBaGFXMXdiM0owWVc1MGZYVnNJMmx1Wm1sdWFYUmxMV0Z5ZEdsamJHVnpDbXhwTG5OMGFXTnJlWHRpYjNKa1pYSXRkRzl3T2pFd2NIZ2djMjlzYVdRZ0kyVTBNemMyWkNBaGFXMXdiM0owWVc1MGZTNWxiblJ5ZVMxMGIzQWdjM0JoYmlCaExDQmthWFl1Wm1WbFpDMXBibVp2SUhOMGNtOXVaeXdnZFd3dVlYSjBhV05zWlY5c2FYTjBJQzVoYmkxM2FXUm5aWFF0ZEdsMGJHVWdjM0JoYmlCaExDQXVZMjl3ZVhKcFoyaDBJR0VzSUM1dFlXZGhlbWx1WlMxc2FYTjBJQzVoYmkxM2FXUm5aWFF0ZEdsMGJHVWdjM0JoYmdwaGUySnZjbVJsY2kxaWIzUjBiMjA2TVhCNElITnZiR2xrSUNObE5ETTNObVFnSVdsdGNHOXlkR0Z1ZEgxa2FYWXVkWEJzYjJGa1luUnVJQzV6YVcxd2JHVmlkRzRzSUM1bWNtOXVkQzF2ZG1WeWJHRjVMV052Ym5SbGJuUWdJM05sWVhKamFHWnZjbTB4SUM1aWRYUjBiMjVwWTI5dUxDQXVjRzl6ZEMxallYUmxaMjl5ZVNCaExDQjFiQzVoY25ScFkyeGxYMnhwYzNRZ0xtRnlkR2xqYkdVdFkyRjBaV2R2Y25sN1ltRmphMmR5YjNWdVpDMWpiMnh2Y2pvalpUUXpOelprSUNGcGJYQnZjblJoYm5SOUxtRnlkR2xqYkdVdFkyOXRiU3dnTG5kd0xYQmhaMlZ1WVhacElHRXNJQzUzY0Mxd1lXZGxibUYyYVNCemNHRnVMQ0F1YzJsdVoyeGxMV052Ym5SbGJuUWdhRE11ZEdsMGJHVXNJQzV0ZVMxd1lXZHBibUYwWldRdGNHOXpkSE1nY0NCaExDQWpkM0F0WTJGc1pXNWtZWElnZEdKdlpIa2dkR1FqZEc5a1lYa3NJQzVqYjIxdFpXNTBjeUJvTXk1amIyMXRaVzUwTFhKbGNHeDVMWFJwZEd4bExDQWpZMjl0YldWdWRHWnZjbTBnSTNObGJtUmxiV0ZwYkN3Z1ptOXliUzUzY0dObU55MW1iM0p0SUdsdWNIVjBMbmR3WTJZM0xYTjFZbTFwZEN3Z0xtSmhjaTEwYjNBc0lDNW1ZUzFpYjNnc0lDTjBZV0p6SUd4cElHRXNJQ04wWVdKek1pQnNhUXBoZTJKaFkydG5jbTkxYm1RdFkyOXNiM0k2SXpJeU1pQWhhVzF3YjNKMFlXNTBmUzV6YVc1bmJHVXRZMjl1ZEdWdWRDQm9NeTUwYVhSc1pTQnBMQ0F1WTI5dGJXVnVkSE1nYURNdVkyOXRiV1Z1ZEMxeVpYQnNlUzEwYVhSc1pRcHBlMkp2Y21SbGNpMWpiMnh2Y2pvak1qSXlJSFJ5WVc1emNHRnlaVzUwSUNNeU1qSWdJekl5TWpJeU1pQWhhVzF3YjNKMFlXNTBmUzVoY25KdmR5MWtiM2R1TFhKbGJHRjBaV1I3WW05eVpHVnlMWFJ2Y0RveE1IQjRJSE52Ykdsa0lDTXlNakl5TWpJaGFXMXdiM0owWVc1MGZTNTNhV1JuWlhRZ2FETXVkR2wwYkdVNllXWjBaWElzYURNdWRHOXdMWFJwZEd4bE9tRm1kR1Z5ZTJKaFkydG5jbTkxYm1RNmJtOXVaU0J5WlhCbFlYUWdjMk55YjJ4c0lEQWxJREFsSUNNeU1qSWdJV2x0Y0c5eWRHRnVkSDB1Wm5KdmJuUXRiM1psY214aGVTMTNjbUZ3Q21neGUzQmhaR1JwYm1jdGRHOXdPakV3TUhCNElDRnBiWEJ2Y25SaGJuUjlMbVp5YjI1MExXOTJaWEpzWVhrdFkyOXVkR1Z1ZEN3dVpuSnZiblF0YjNabGNteGhlUzEzY21Gd2UyaGxhV2RvZERvek5qQndlQ0FoYVcxd2IzSjBZVzUwZlR3dmMzUjViR1UrUEhScGRHeGxQbEJoWjJVZ2JtOTBJR1p2ZFc1a0lDMGdVRzVuVUdsNFBDOTBhWFJzWlQ0OGJXVjBZUXB1WVcxbFBTSnliMkp2ZEhNaUlHTnZiblJsYm5ROUltNXZhVzVrWlhnc1ptOXNiRzkzSWk4K1BHMWxkR0VLY0hKdmNHVnlkSGs5SW05bk9teHZZMkZzWlNJZ1kyOXVkR1Z1ZEQwaVpXNWZWVk1pSUM4K1BHMWxkR0VLY0hKdmNHVnlkSGs5SW05bk9uUjVjR1VpSUdOdmJuUmxiblE5SW05aWFtVmpkQ0lnTHo0OGJXVjBZUXB3Y205d1pYSjBlVDBpYjJjNmRHbDBiR1VpSUdOdmJuUmxiblE5SWxCaFoyVWdibTkwSUdadmRXNWtJQzBnVUc1blVHbDRJaUF2UGp4dFpYUmhDbkJ5YjNCbGNuUjVQU0p2WnpwemFYUmxYMjVoYldVaUlHTnZiblJsYm5ROUlsQnVaMUJwZUNJZ0x6NDhiV1YwWVFwdVlXMWxQU0owZDJsMGRHVnlPbU5oY21RaUlHTnZiblJsYm5ROUluTjFiVzFoY25raUlDOCtQRzFsZEdFS2JtRnRaVDBpZEhkcGRIUmxjanAwYVhSc1pTSWdZMjl1ZEdWdWREMGlVR0ZuWlNCdWIzUWdabTkxYm1RZ0xTQlFibWRRYVhnaUlDOCtJRHh6WTNKcGNIUWdkSGx3WlQwbllYQndiR2xqWVhScGIyNHZiR1FyYW5OdmJpYytleUpBWTI5dWRHVjRkQ0k2SW1oMGRIQTZYQzljTDNOamFHVnRZUzV2Y21jaUxDSkFkSGx3WlNJNklsZGxZbE5wZEdVaUxDSkFhV1FpT2lJamQyVmljMmwwWlNJc0luVnliQ0k2SW1oMGRIQnpPbHd2WEM5M2QzY3VjRzVuY0dsNExtTnZiVnd2SWl3aWJtRnRaU0k2SWxCdVoxQnBlQ0lzSW5CdmRHVnVkR2xoYkVGamRHbHZiaUk2ZXlKQWRIbHdaU0k2SWxObFlYSmphRUZqZEdsdmJpSXNJblJoY21kbGRDSTZJbWgwZEhCek9sd3ZYQzkzZDNjdWNHNW5jR2w0TG1OdmJWd3ZQM005ZTNObFlYSmphRjkwWlhKdFgzTjBjbWx1WjMwaUxDSnhkV1Z5ZVMxcGJuQjFkQ0k2SW5KbGNYVnBjbVZrSUc1aGJXVTljMlZoY21Ob1gzUmxjbTFmYzNSeWFXNW5JbjE5UEM5elkzSnBjSFErSUR4c2FXNXJDbkpsYkQwblpHNXpMWEJ5WldabGRHTm9KeUJvY21WbVBTY3ZMMlp2Ym5SekxtZHZiMmRzWldGd2FYTXVZMjl0SnlBdlBqeHNhVzVyQ25KbGJEMG5aRzV6TFhCeVpXWmxkR05vSnlCb2NtVm1QU2N2TDNNdWR5NXZjbWNuSUM4K1BHeHBibXNLY21Wc1BTSmhiSFJsY201aGRHVWlJSFI1Y0dVOUltRndjR3hwWTJGMGFXOXVMM0p6Y3l0NGJXd2lJSFJwZEd4bFBTSlFibWRRYVhnZ0puSmhjWFZ2T3lCR1pXVmtJaUJvY21WbVBTSm9kSFJ3Y3pvdkwzZDNkeTV3Ym1kd2FYZ3VZMjl0TDJabFpXUWlJQzgrUEd4cGJtc0tjbVZzUFNKaGJIUmxjbTVoZEdVaUlIUjVjR1U5SW1Gd2NHeHBZMkYwYVc5dUwzSnpjeXQ0Yld3aUlIUnBkR3hsUFNKUWJtZFFhWGdnSm5KaGNYVnZPeUJEYjIxdFpXNTBjeUJHWldWa0lpQm9jbVZtUFNKb2RIUndjem92TDNkM2R5NXdibWR3YVhndVkyOXRMMk52YlcxbGJuUnpMMlpsWldRaUlDOCtJRHh6WTNKcGNIUWdkSGx3WlQwaWRHVjRkQzlxWVhaaGMyTnlhWEIwSWo1M2FXNWtiM2N1WDNkd1pXMXZhbWxUWlhSMGFXNW5jejE3SW1KaGMyVlZjbXdpT2lKb2RIUndjenBjTDF3dmN5NTNMbTl5WjF3dmFXMWhaMlZ6WEM5amIzSmxYQzlsYlc5cWFWd3ZNaTQwWEM4M01uZzNNbHd2SWl3aVpYaDBJam9pTG5CdVp5SXNJbk4yWjFWeWJDSTZJbWgwZEhCek9sd3ZYQzl6TG5jdWIzSm5YQzlwYldGblpYTmNMMk52Y21WY0wyVnRiMnBwWEM4eUxqUmNMM04yWjF3dklpd2ljM1puUlhoMElqb2lMbk4yWnlJc0luTnZkWEpqWlNJNmV5SmpiMjVqWVhSbGJXOXFhU0k2SW1oMGRIQnpPbHd2WEM5M2QzY3VjRzVuY0dsNExtTnZiVnd2ZDNBdGFXNWpiSFZrWlhOY0wycHpYQzkzY0MxbGJXOXFhUzF5Wld4bFlYTmxMbTFwYmk1cWN6OTJaWEk5TkM0NUxqUWlmWDA3SVdaMWJtTjBhVzl1S0dFc1lpeGpLWHRtZFc1amRHbHZiaUJrS0dFc1lpbDdkbUZ5SUdNOVUzUnlhVzVuTG1aeWIyMURhR0Z5UTI5a1pUdHNMbU5zWldGeVVtVmpkQ2d3TERBc2F5NTNhV1IwYUN4ckxtaGxhV2RvZENrc2JDNW1hV3hzVkdWNGRDaGpMbUZ3Y0d4NUtIUm9hWE1zWVNrc01Dd3dLVHQyWVhJZ1pEMXJMblJ2UkdGMFlWVlNUQ2dwTzJ3dVkyeGxZWEpTWldOMEtEQXNNQ3hyTG5kcFpIUm9MR3N1YUdWcFoyaDBLU3hzTG1acGJHeFVaWGgwS0dNdVlYQndiSGtvZEdocGN5eGlLU3d3TERBcE8zWmhjaUJsUFdzdWRHOUVZWFJoVlZKTUtDazdjbVYwZFhKdUlHUTlQVDFsZldaMWJtTjBhVzl1SUdVb1lTbDdkbUZ5SUdJN2FXWW9JV3g4ZkNGc0xtWnBiR3hVWlhoMEtYSmxkSFZ5YmlFeE8zTjNhWFJqYUNoc0xuUmxlSFJDWVhObGJHbHVaVDBpZEc5d0lpeHNMbVp2Ym5ROUlqWXdNQ0F6TW5CNElFRnlhV0ZzSWl4aEtYdGpZWE5sSW1ac1lXY2lPbkpsZEhWeWJpRW9ZajFrS0ZzMU5UTTFOaXcxTmpneU5pdzFOVE0xTml3MU5qZ3hPVjBzV3pVMU16VTJMRFUyT0RJMkxEZ3lNRE1zTlRVek5UWXNOVFk0TVRsZEtTa21KaWhpUFdRb1d6VTFNelUyTERVM016TXlMRFUyTVRJNExEVTJOREl6TERVMk1USTRMRFUyTkRFNExEVTJNVEk0TERVMk5ESXhMRFUyTVRJNExEVTJORE13TERVMk1USTRMRFUyTkRJekxEVTJNVEk0TERVMk5EUTNYU3hiTlRVek5UWXNOVGN6TXpJc09ESXdNeXcxTmpFeU9DdzFOalF5TXl3NE1qQXpMRFUyTVRJNExEVTJOREU0TERneU1ETXNOVFl4TWpnc05UWTBNakVzT0RJd015dzFOakV5T0N3MU5qUXpNQ3c0TWpBekxEVTJNVEk0TERVMk5ESXpMRGd5TURNc05UWXhNamdzTlRZME5EZGRLU3doWWlrN1kyRnpaU0psYlc5cWFTSTZjbVYwZFhKdUlHSTlaQ2hiTlRVek5UY3NOVFkyT1RJc09ESXdOU3c1TnpreUxEWTFNRE01WFN4Yk5UVXpOVGNzTlRZMk9USXNPREl3TXl3NU56a3lMRFkxTURNNVhTa3NJV0o5Y21WMGRYSnVJVEY5Wm5WdVkzUnBiMjRnWmloaEtYdDJZWElnWXoxaUxtTnlaV0YwWlVWc1pXMWxiblFvSW5OamNtbHdkQ0lwTzJNdWMzSmpQV0VzWXk1a1pXWmxjajFqTG5SNWNHVTlJblJsZUhRdmFtRjJZWE5qY21sd2RDSXNZaTVuWlhSRmJHVnRaVzUwYzBKNVZHRm5UbUZ0WlNnaWFHVmhaQ0lwV3pCZExtRndjR1Z1WkVOb2FXeGtLR01wZlhaaGNpQm5MR2dzYVN4cUxHczlZaTVqY21WaGRHVkZiR1Z0Wlc1MEtDSmpZVzUyWVhNaUtTeHNQV3N1WjJWMFEyOXVkR1Y0ZENZbWF5NW5aWFJEYjI1MFpYaDBLQ0l5WkNJcE8yWnZjaWhxUFVGeWNtRjVLQ0ptYkdGbklpd2laVzF2YW1raUtTeGpMbk4xY0hCdmNuUnpQWHRsZG1WeWVYUm9hVzVuT2lFd0xHVjJaWEo1ZEdocGJtZEZlR05sY0hSR2JHRm5PaUV3ZlN4cFBUQTdhVHhxTG14bGJtZDBhRHRwS3lzcFl5NXpkWEJ3YjNKMGMxdHFXMmxkWFQxbEtHcGJhVjBwTEdNdWMzVndjRzl5ZEhNdVpYWmxjbmwwYUdsdVp6MWpMbk4xY0hCdmNuUnpMbVYyWlhKNWRHaHBibWNtSm1NdWMzVndjRzl5ZEhOYmFsdHBYVjBzSW1ac1lXY2lJVDA5YWx0cFhTWW1LR011YzNWd2NHOXlkSE11WlhabGNubDBhR2x1WjBWNFkyVndkRVpzWVdjOVl5NXpkWEJ3YjNKMGN5NWxkbVZ5ZVhSb2FXNW5SWGhqWlhCMFJteGhaeVltWXk1emRYQndiM0owYzF0cVcybGRYU2s3WXk1emRYQndiM0owY3k1bGRtVnllWFJvYVc1blJYaGpaWEIwUm14aFp6MWpMbk4xY0hCdmNuUnpMbVYyWlhKNWRHaHBibWRGZUdObGNIUkdiR0ZuSmlZaFl5NXpkWEJ3YjNKMGN5NW1iR0ZuTEdNdVJFOU5VbVZoWkhrOUlURXNZeTV5WldGa2VVTmhiR3hpWVdOclBXWjFibU4wYVc5dUtDbDdZeTVFVDAxU1pXRmtlVDBoTUgwc1l5NXpkWEJ3YjNKMGN5NWxkbVZ5ZVhSb2FXNW5mSHdvYUQxbWRXNWpkR2x2YmlncGUyTXVjbVZoWkhsRFlXeHNZbUZqYXlncGZTeGlMbUZrWkVWMlpXNTBUR2x6ZEdWdVpYSS9LR0l1WVdSa1JYWmxiblJNYVhOMFpXNWxjaWdpUkU5TlEyOXVkR1Z1ZEV4dllXUmxaQ0lzYUN3aE1Ta3NZUzVoWkdSRmRtVnVkRXhwYzNSbGJtVnlLQ0pzYjJGa0lpeG9MQ0V4S1NrNktHRXVZWFIwWVdOb1JYWmxiblFvSW05dWJHOWhaQ0lzYUNrc1lpNWhkSFJoWTJoRmRtVnVkQ2dpYjI1eVpXRmtlWE4wWVhSbFkyaGhibWRsSWl4bWRXNWpkR2x2YmlncGV5SmpiMjF3YkdWMFpTSTlQVDFpTG5KbFlXUjVVM1JoZEdVbUptTXVjbVZoWkhsRFlXeHNZbUZqYXlncGZTa3BMR2M5WXk1emIzVnlZMlY4Zkh0OUxHY3VZMjl1WTJGMFpXMXZhbWsvWmlobkxtTnZibU5oZEdWdGIycHBLVHBuTG5kd1pXMXZhbWttSm1jdWRIZGxiVzlxYVNZbUtHWW9aeTUwZDJWdGIycHBLU3htS0djdWQzQmxiVzlxYVNrcEtYMG9kMmx1Wkc5M0xHUnZZM1Z0Wlc1MExIZHBibVJ2ZHk1ZmQzQmxiVzlxYVZObGRIUnBibWR6S1RzOEwzTmpjbWx3ZEQ0Z1BITjBlV3hsSUhSNWNHVTlJblJsZUhRdlkzTnpJajVwYldjdWQzQXRjMjFwYkdWNUxHbHRaeTVsYlc5cWFYdGthWE53YkdGNU9tbHViR2x1WlNBaGFXMXdiM0owWVc1ME8ySnZjbVJsY2pwdWIyNWxJQ0ZwYlhCdmNuUmhiblE3WW05NExYTm9ZV1J2ZHpwdWIyNWxJQ0ZwYlhCdmNuUmhiblE3YUdWcFoyaDBPakZsYlNBaGFXMXdiM0owWVc1ME8zZHBaSFJvT2pGbGJTQWhhVzF3YjNKMFlXNTBPMjFoY21kcGJqb3dDaTR3TjJWdElDRnBiWEJ2Y25SaGJuUTdkbVZ5ZEdsallXd3RZV3hwWjI0NkxUQXVNV1Z0SUNGcGJYQnZjblJoYm5RN1ltRmphMmR5YjNWdVpEcHViMjVsSUNGcGJYQnZjblJoYm5RN2NHRmtaR2x1Wnpvd0NpRnBiWEJ2Y25SaGJuUjlQQzl6ZEhsc1pUNDhiR2x1YXdweVpXdzlKM04wZVd4bGMyaGxaWFFuSUdsa1BTZGhiblJvWlcxbGMxOXphRzl5ZEdOdlpHVmZjM1I1YkdWekxXTnpjeWNnSUdoeVpXWTlKMmgwZEhCek9pOHZkM2QzTG5CdVozQnBlQzVqYjIwdmQzQXRZMjl1ZEdWdWRDOXdiSFZuYVc1ekwyRnVkR2hsYldWekxYTm9iM0owWTI5a1pYTXZhVzVqYkhWa1pYTXZZM056TDJGdWRHaGxiV1Z6TFhOb2IzSjBZMjlrWlhNdVkzTnpQM1psY2owMExqa3VOQ2NnZEhsd1pUMG5kR1Y0ZEM5amMzTW5JRzFsWkdsaFBTZGhiR3duSUM4K1BHeHBibXNLY21Wc1BTZHpkSGxzWlhOb1pXVjBKeUJwWkQwbllYSmxkbWxqYjE5elkzTm1ZbU56Y3kxamMzTW5JQ0JvY21WbVBTZG9kSFJ3Y3pvdkwzZDNkeTV3Ym1kd2FYZ3VZMjl0TDNkd0xXTnZiblJsYm5RdmNHeDFaMmx1Y3k5bVlXTmxZbTl2YXkxd1lXZGxMWEJ5YjIxdmRHVnlMV3hwWjJoMFltOTRMMmx1WTJ4MVpHVnpMMlpsWVhSb1pYSnNhV2RvZEM5bVpXRjBhR1Z5YkdsbmFIUXViV2x1TG1OemN6OTJaWEk5TkM0NUxqUW5JSFI1Y0dVOUozUmxlSFF2WTNOekp5QnRaV1JwWVQwbllXeHNKeUF2UGp4c2FXNXJDbkpsYkQwbmMzUjViR1Z6YUdWbGRDY2dhV1E5SjNkd0xYQmhaMlZ1WVhacExXTnpjeWNnSUdoeVpXWTlKMmgwZEhCek9pOHZkM2QzTG5CdVozQnBlQzVqYjIwdmQzQXRZMjl1ZEdWdWRDOXdiSFZuYVc1ekwzZHdMWEJoWjJWdVlYWnBMM0JoWjJWdVlYWnBMV056Y3k1amMzTS9kbVZ5UFRJdU56QW5JSFI1Y0dVOUozUmxlSFF2WTNOekp5QnRaV1JwWVQwbllXeHNKeUF2UGp4c2FXNXJDbkpsYkQwbmMzUjViR1Z6YUdWbGRDY2dhV1E5SjNOMGVXeGxMV056Y3ljZ0lHaHlaV1k5SjJoMGRIQnpPaTh2ZDNkM0xuQnVaM0JwZUM1amIyMHZkM0F0WTI5dWRHVnVkQzkwYUdWdFpYTXZjRzVuY0dsNEwzTjBlV3hsTG1OemN6OTJaWEk5TVM0d0p5QjBlWEJsUFNkMFpYaDBMMk56Y3ljZ2JXVmthV0U5SjJGc2JDY2dMejQ4YkdsdWF3cHlaV3c5SjNOMGVXeGxjMmhsWlhRbklHbGtQU2RrWldaaGRXeDBMV056Y3ljZ0lHaHlaV1k5SjJoMGRIQnpPaTh2ZDNkM0xuQnVaM0JwZUM1amIyMHZkM0F0WTI5dWRHVnVkQzkwYUdWdFpYTXZjRzVuY0dsNEwyTnpjeTlqYjJ4dmNuTXZaR1ZtWVhWc2RDNWpjM00vZG1WeVBUUXVPUzQwSnlCMGVYQmxQU2QwWlhoMEwyTnpjeWNnYldWa2FXRTlKMkZzYkNjZ0x6NDhiR2x1YXdweVpXdzlKM04wZVd4bGMyaGxaWFFuSUdsa1BTZHZkMnd0WTJGeWIzVnpaV3d0WTNOekxXTnpjeWNnSUdoeVpXWTlKMmgwZEhCek9pOHZkM2QzTG5CdVozQnBlQzVqYjIwdmQzQXRZMjl1ZEdWdWRDOTBhR1Z0WlhNdmNHNW5jR2w0TDI5M2JDMWpZWEp2ZFhObGJDOXZkMnd1WTJGeWIzVnpaV3d1WTNOelAzWmxjajAwTGprdU5DY2dkSGx3WlQwbmRHVjRkQzlqYzNNbklHMWxaR2xoUFNkaGJHd25JQzgrUEd4cGJtc0tjbVZzUFNkemRIbHNaWE5vWldWMEp5QnBaRDBuY21WemNHOXVjMmwyWlMxamMzTW5JQ0JvY21WbVBTZG9kSFJ3Y3pvdkwzZDNkeTV3Ym1kd2FYZ3VZMjl0TDNkd0xXTnZiblJsYm5RdmRHaGxiV1Z6TDNCdVozQnBlQzlqYzNNdmNtVnpjRzl1YzJsMlpTNWpjM00vZG1WeVBURXVNQ2NnZEhsd1pUMG5kR1Y0ZEM5amMzTW5JRzFsWkdsaFBTZGhiR3duSUM4K1BHeHBibXNLY21Wc1BTZHpkSGxzWlhOb1pXVjBKeUJwWkQwbloyOXZaMnhsTFdadmJuUXRZM056SnlBZ2FISmxaajBuTHk5bWIyNTBjeTVuYjI5bmJHVmhjR2x6TG1OdmJTOWpjM00vWm1GdGFXeDVQVkoxWkdFbE0wRTBNREFsTWtNM01EQW1JekF6T0R0MlpYSTlOQzQ1TGpRbklIUjVjR1U5SjNSbGVIUXZZM056SnlCdFpXUnBZVDBuWVd4c0p5QXZQanhzYVc1ckNuSmxiRDBuYzNSNWJHVnphR1ZsZENjZ2FXUTlKMlp2Ym5RdFlYZGxjMjl0WlMxamMzTW5JQ0JvY21WbVBTZG9kSFJ3Y3pvdkwzZDNkeTV3Ym1kd2FYZ3VZMjl0TDNkd0xXTnZiblJsYm5RdmRHaGxiV1Z6TDNCdVozQnBlQzlqYzNNdlptOXVkQzFoZDJWemIyMWxMVFF1TlM0d0wyTnpjeTltYjI1MExXRjNaWE52YldVdWJXbHVMbU56Y3o5MlpYSTlOQzQ1TGpRbklIUjVjR1U5SjNSbGVIUXZZM056SnlCdFpXUnBZVDBuWVd4c0p5QXZQaUE4YzJOeWFYQjBJSFI1Y0dVOUozUmxlSFF2YW1GMllYTmpjbWx3ZENjZ2MzSmpQU2RvZEhSd2N6b3ZMM2QzZHk1d2JtZHdhWGd1WTI5dEwzZHdMV2x1WTJ4MVpHVnpMMnB6TDJweGRXVnllUzlxY1hWbGNua3Vhbk0vZG1WeVBURXVNVEl1TkNjK1BDOXpZM0pwY0hRK0lEeHpZM0pwY0hRZ2RIbHdaVDBuZEdWNGRDOXFZWFpoYzJOeWFYQjBKeUJ6Y21NOUoyaDBkSEJ6T2k4dmQzZDNMbkJ1WjNCcGVDNWpiMjB2ZDNBdGFXNWpiSFZrWlhNdmFuTXZhbkYxWlhKNUwycHhkV1Z5ZVMxdGFXZHlZWFJsTG0xcGJpNXFjejkyWlhJOU1TNDBMakVuUGp3dmMyTnlhWEIwUGlBOGMyTnlhWEIwSUhSNWNHVTlKM1JsZUhRdmFtRjJZWE5qY21sd2RDY2djM0pqUFNkb2RIUndjem92TDNkM2R5NXdibWR3YVhndVkyOXRMM2R3TFdOdmJuUmxiblF2Y0d4MVoybHVjeTltWVdObFltOXZheTF3WVdkbExYQnliMjF2ZEdWeUxXeHBaMmgwWW05NEwybHVZMngxWkdWekwyWmxZWFJvWlhKc2FXZG9kQzltWldGMGFHVnliR2xuYUhRdWJXbHVMbXB6UDNabGNqMDBMamt1TkNjK1BDOXpZM0pwY0hRK0lEeHpZM0pwY0hRZ2RIbHdaVDBuZEdWNGRDOXFZWFpoYzJOeWFYQjBKejUyWVhJZ2JHSmZiRjl5WlhROWV5SjNhV1IwYUNJNklqUXdNQ0lzSW1obGFXZG9kQ0k2SWpJMU5TSXNJbVJsYkdGNUlqb2lNVEF3TURBaUxDSmpiMk1pT2lJeElpd2labUpmYVdRaU9pSndibWR3YVhnaUxDSmpiMjlqSWpvaU1DSXNJbVJwYzNCc1lYbGZiMjVmWVd4c0lqb2lNU0lzSW5Ob2IzZGZiMjVqWlNJNklqRWlMQ0p0YVc0aU9pSXdJaXdpY0dWeVptOXliV0Z1WTJVaU9pSXdJbjA3UEM5elkzSnBjSFErSUR4elkzSnBjSFFnZEhsd1pUMG5kR1Y0ZEM5cVlYWmhjMk55YVhCMEp5QnpjbU05SjJoMGRIQnpPaTh2ZDNkM0xuQnVaM0JwZUM1amIyMHZkM0F0WTI5dWRHVnVkQzl3YkhWbmFXNXpMMlpoWTJWaWIyOXJMWEJoWjJVdGNISnZiVzkwWlhJdGJHbG5hSFJpYjNndmFXNWpiSFZrWlhNdmJHRjFibU5vTDJ4aGRXNWphQzV0YVc0dWFuTS9kbVZ5UFRRdU9TNDBKejQ4TDNOamNtbHdkRDRnUEd4cGJtc0tjbVZzUFNkb2RIUndjem92TDJGd2FTNTNMbTl5Wnk4bklHaHlaV1k5SjJoMGRIQnpPaTh2ZDNkM0xuQnVaM0JwZUM1amIyMHZkM0F0YW5OdmJpOG5JQzgrUEd4cGJtc0tjbVZzUFNKRlpHbDBWVkpKSWlCMGVYQmxQU0poY0hCc2FXTmhkR2x2Ymk5eWMyUXJlRzFzSWlCMGFYUnNaVDBpVWxORUlpQm9jbVZtUFNKb2RIUndjem92TDNkM2R5NXdibWR3YVhndVkyOXRMM2h0YkhKd1l5NXdhSEEvY25Oa0lpQXZQanhzYVc1ckNuSmxiRDBpZDJ4M2JXRnVhV1psYzNRaUlIUjVjR1U5SW1Gd2NHeHBZMkYwYVc5dUwzZHNkMjFoYm1sbVpYTjBLM2h0YkNJZ2FISmxaajBpYUhSMGNITTZMeTkzZDNjdWNHNW5jR2w0TG1OdmJTOTNjQzFwYm1Oc2RXUmxjeTkzYkhkdFlXNXBabVZ6ZEM1NGJXd2lJQzgrUEcxbGRHRUtibUZ0WlQwaVoyVnVaWEpoZEc5eUlpQmpiMjUwWlc1MFBTSlhiM0prVUhKbGMzTWdOQzQ1TGpRaUlDOCtJRHh6WTNKcGNIUWdkSGx3WlQwaWRHVjRkQzlxWVhaaGMyTnlhWEIwSWo1M2FXNWtiM2N1WDNObFgzQnNkV2RwYmw5MlpYSnphVzl1UFNjNExqRXVPU2M3UEM5elkzSnBjSFErSUR3dmFHVmhaRDQ4WW05a2VRcGpiR0Z6Y3owaVpYSnliM0kwTURRaVBqeG9aV0ZrWlhJK1BHUnBkZ3BqYkdGemN6MGliV0ZwYmkxb1pXRmtaWElpUGp4a2FYWUtZMnhoYzNNOUluTjBhV05yZVMxdmJpSStQR0VLYUhKbFpqMGlhSFIwY0hNNkx5OTNkM2N1Y0c1bmNHbDRMbU52YlM4aVBqeHBiV2NLWTJ4aGMzTTlJbXh2WjI4aUlITnlZejBpYUhSMGNEb3ZMM2QzZHk1d2JtZHdhWGd1WTI5dEwzZHdMV052Ym5SbGJuUXZkWEJzYjJGa2N5OHlNREUyTHpBMkwyeHZaMjh1Y0c1bklpQmhiSFE5SWxCdVoxQnBlQ0lnTHo0OEwyRStQRzVoZGdwcFpEMGliWGxxY1hWbGNubHRaVzUxSWlCamJHRnpjejBpYW5GMVpYSjVZM056YldWdWRTSStDand2Ym1GMlBqeGthWFlLWTJ4aGMzTTlJblZ3Ykc5aFpHSjBiaUkrQ2p4aENtaHlaV1k5SWlNaUlHTnNZWE56UFNKemFXMXdiR1ZpZEc0aVBqeHBDbU5zWVhOelBTSm1ZU0JtWVMxamJHOTFaQzExY0d4dllXUWlQand2YVQ0Z1BITndZVzQrVTNWaWJXbDBQQzl6Y0dGdVBqd3ZZVDQ4TDJScGRqNDhaR2wyQ21Oc1lYTnpQU0pqZFhOMGIyMHRaSEp2Y0dSdmQyNGdZM1Z6ZEc5dExXUnliM0JrYjNkdUxTMTNhR2wwWlNJK1BHWnZjbTBLWVdOMGFXOXVQU0pvZEhSd2N6b3ZMM2QzZHk1d2JtZHdhWGd1WTI5dEx5SWdiV1YwYUc5a1BTSm5aWFFpUGdvOGMyVnNaV04wQ201aGJXVTlKMk5oZENjZ2FXUTlKMk5oZENjZ1kyeGhjM005SjNCdmMzUm1iM0p0SnlBZ2IyNWphR0Z1WjJVOUozSmxkSFZ5YmlCMGFHbHpMbVp2Y20wdWMzVmliV2wwS0NrblBqeHZjSFJwYjI0S2RtRnNkV1U5SnpBbklITmxiR1ZqZEdWa1BTZHpaV3hsWTNSbFpDYytRbkp2ZDNObElFTmhkR1ZuYjNKcFpYTThMMjl3ZEdsdmJqNDhiM0IwYVc5dUNtTnNZWE56UFNKc1pYWmxiQzB3SWlCMllXeDFaVDBpTWpBd055SStRMnhwY0dGeWRITW1ibUp6Y0RzbWJtSnpjRHNvTkRnNEtUd3ZiM0IwYVc5dVBqeHZjSFJwYjI0S1kyeGhjM005SW14bGRtVnNMVEFpSUhaaGJIVmxQU0l5TlRVeklqNURaV3hsWW5KcGRIa21ibUp6Y0RzbWJtSnpjRHNvTWprNUtUd3ZiM0IwYVc5dVBqeHZjSFJwYjI0S1kyeGhjM005SW14bGRtVnNMVEFpSUhaaGJIVmxQU0l4TkRJaVBsWmxaMlYwWVdKc1pYTW1ibUp6Y0RzbWJtSnpjRHNvTXpReEtUd3ZiM0IwYVc5dVBqeHZjSFJwYjI0S1kyeGhjM005SW14bGRtVnNMVEFpSUhaaGJIVmxQU0l4TkRVaVBrWnlkV2wwY3ladVluTndPeVp1WW5Od095Z3pPVE1wUEM5dmNIUnBiMjQrUEc5d2RHbHZiZ3BqYkdGemN6MGliR1YyWld3dE1DSWdkbUZzZFdVOUlqRTBOQ0krUVc1cGJXRnNjeVp1WW5Od095WnVZbk53T3lneE9UY3BQQzl2Y0hScGIyNCtQRzl3ZEdsdmJncGpiR0Z6Y3owaWJHVjJaV3d0TUNJZ2RtRnNkV1U5SWpFMU5TSStRbWx5WkhNbWJtSnpjRHNtYm1KemNEc29OVFlwUEM5dmNIUnBiMjQrUEc5d2RHbHZiZ3BqYkdGemN6MGliR1YyWld3dE1DSWdkbUZzZFdVOUlqRTBPQ0krUm14dmQyVnljeVp1WW5Od095WnVZbk53T3lnMU5pazhMMjl3ZEdsdmJqNDhiM0IwYVc5dUNtTnNZWE56UFNKc1pYWmxiQzB3SWlCMllXeDFaVDBpTVRReklqNURZWEp6Sm01aWMzQTdKbTVpYzNBN0tEZ3hNU2s4TDI5d2RHbHZiajQ4YjNCMGFXOXVDbU5zWVhOelBTSnNaWFpsYkMwd0lpQjJZV3gxWlQwaU1UVTNJajVXWldocFkyeGxjeVp1WW5Od095WnVZbk53T3lnek1qRXBQQzl2Y0hScGIyNCtQRzl3ZEdsdmJncGpiR0Z6Y3owaWJHVjJaV3d0TUNJZ2RtRnNkV1U5SWpFMU5pSStSV3hsWTNSeWIyNXBZM01tYm1KemNEc21ibUp6Y0Rzb016QTVLVHd2YjNCMGFXOXVQanh2Y0hScGIyNEtZMnhoYzNNOUlteGxkbVZzTFRBaUlIWmhiSFZsUFNJeE5EWWlQa1p2YjJRbWJtSnpjRHNtYm1KemNEc29NemN6S1R3dmIzQjBhVzl1UGp4dmNIUnBiMjRLWTJ4aGMzTTlJbXhsZG1Wc0xUQWlJSFpoYkhWbFBTSXhOVEVpUGxCbGIzQnNaU1p1WW5Od095WnVZbk53T3lnek1UVXBQQzl2Y0hScGIyNCtQRzl3ZEdsdmJncGpiR0Z6Y3owaWJHVjJaV3d0TUNJZ2RtRnNkV1U5SWpFME9TSStSbUZ6YUdsdmJpWnVZbk53T3ladVluTndPeWd4TVRNcFBDOXZjSFJwYjI0K1BHOXdkR2x2YmdwamJHRnpjejBpYkdWMlpXd3RNQ0lnZG1Gc2RXVTlJakUxTWlJK1JuVnlibWwwZFhKbEptNWljM0E3Sm01aWMzQTdLREkyS1R3dmIzQjBhVzl1UGp4dmNIUnBiMjRLWTJ4aGMzTTlJbXhsZG1Wc0xUQWlJSFpoYkhWbFBTSXhOVFFpUGtsdWMyVmpkSE1tYm1KemNEc21ibUp6Y0Rzb05ESXBQQzl2Y0hScGIyNCtQRzl3ZEdsdmJncGpiR0Z6Y3owaWJHVjJaV3d0TUNJZ2RtRnNkV1U5SWpFME55SStUbUYwZFhKbEptNWljM0E3Sm01aWMzQTdLREUzTXlrOEwyOXdkR2x2Ymo0OGIzQjBhVzl1Q21Oc1lYTnpQU0pzWlhabGJDMHdJaUIyWVd4MVpUMGlNVFV6SWo1VGNHOXlkSE1tYm1KemNEc21ibUp6Y0Rzb01UUTRLVHd2YjNCMGFXOXVQanh2Y0hScGIyNEtZMnhoYzNNOUlteGxkbVZzTFRBaUlIWmhiSFZsUFNJeE5UQWlQazlpYW1WamRITW1ibUp6Y0RzbWJtSnpjRHNvTVN3eE1EY3BQQzl2Y0hScGIyNCtQRzl3ZEdsdmJncGpiR0Z6Y3owaWJHVjJaV3d0TUNJZ2RtRnNkV1U5SWpFMU9TSStWMlZoY0c5dWN5WnVZbk53T3ladVluTndPeWd4TWpjcFBDOXZjSFJwYjI0K1BHOXdkR2x2YmdwamJHRnpjejBpYkdWMlpXd3RNQ0lnZG1Gc2RXVTlJakUxT0NJK1ZHOXZiSE1tYm1KemNEc21ibUp6Y0Rzb01UQXdLVHd2YjNCMGFXOXVQanh2Y0hScGIyNEtZMnhoYzNNOUlteGxkbVZzTFRBaUlIWmhiSFZsUFNJeE1UZzFJajVNYjJkdmN5WnVZbk53T3ladVluTndPeWd6T0RFcFBDOXZjSFJwYjI0K1BHOXdkR2x2YmdwamJHRnpjejBpYkdWMlpXd3RNQ0lnZG1Gc2RXVTlJams0SWo1UGRHaGxjbk1tYm1KemNEc21ibUp6Y0Rzb05UUXBQQzl2Y0hScGIyNCtDand2YzJWc1pXTjBQZ284Ym05elkzSnBjSFErUEdScGRqNDhhVzV3ZFhRS2RIbHdaVDBpYzNWaWJXbDBJaUIyWVd4MVpUMGlWbWxsZHlJZ0x6NDhMMlJwZGo0OEwyNXZjMk55YVhCMFBqd3ZabTl5YlQ0OEwyUnBkajQ4Wm05eWJRcHBaRDBpYzJWaGNtTm9abTl5YlRJaUlHTnNZWE56UFNKb1pXRmtaWEl0YzJWaGNtTm9JaUJ0WlhSb2IyUTlJbWRsZENJZ1lXTjBhVzl1UFNKb2RIUndjem92TDNkM2R5NXdibWR3YVhndVkyOXRMeUkrUEdsdWNIVjBDbkJzWVdObGFHOXNaR1Z5UFNKVFpXRnlZMmdnVUU1SElDNHVMaUlnZEhsd1pUMGlkR1Y0ZENJZ2JtRnRaVDBpY3lJZ2FXUTlJbk1pSUM4K1BHbHVjSFYwQ25SNWNHVTlJbk4xWW0xcGRDSWdkbUZzZFdVOUlsTmxZWEpqYUNJZ1kyeGhjM005SW1KMWRIUnZibWxqYjI0aUlDOCtQQzltYjNKdFBqeGthWFlLWTJ4aGMzTTlJbU5zWldGeUlqNDhMMlJwZGo0OEwyUnBkajQ4WkdsMkNtTnNZWE56UFNKamJHVmhjaUkrUEM5a2FYWStQQzlrYVhZK1BDOW9aV0ZrWlhJK1BHUnBkZ3BqYkdGemN6MGlZMnhsWVhJaVBqd3ZaR2wyUGp4a2FYWUtZMnhoYzNNOUluTjFZaTFvWldGa1pYSWlQanhrYVhZS1kyeGhjM005SW5keVlYQXRiV2xrWkd4bElqNDhabTl5YlFwcFpEMGljMlZoY21Ob1ptOXliVElpSUdOc1lYTnpQU0pvWldGa1pYSXRjMlZoY21Ob0lpQnRaWFJvYjJROUltZGxkQ0lnWVdOMGFXOXVQU0pvZEhSd2N6b3ZMM2QzZHk1d2JtZHdhWGd1WTI5dEx5SStQR2x1Y0hWMENuQnNZV05sYUc5c1pHVnlQU0pUWldGeVkyZ2dVRTVISUM0dUxpSWdkSGx3WlQwaWRHVjRkQ0lnYm1GdFpUMGljeUlnYVdROUluTWlJQzgrUEdsdWNIVjBDblI1Y0dVOUluTjFZbTFwZENJZ2RtRnNkV1U5SWxObFlYSmphQ0lnWTJ4aGMzTTlJbUoxZEhSdmJtbGpiMjRpSUM4K1BDOW1iM0p0UGp4a2FYWUtZMnhoYzNNOUltTnNaV0Z5SWo0OEwyUnBkajQ4TDJScGRqNDhMMlJwZGo0OFpHbDJDbU5zWVhOelBTSm9iMjFsTFdaMWJHeDNhV1IwYUNJK1BHUnBkZ3BqYkdGemN6MGlkM0poY0MxamIyNTBaVzUwSWo0OFpHbDJDbU5zWVhOelBTSmhjbU5vYVhabExXaGxZV1JsY2lJK1BHZ3pQa1Z5Y205eUlEUXdOQ0F0SUU1dmRDQkdiM1Z1WkNBOFluSUtMejRnVTI5eWNua3NJR0oxZENCNWIzVWdZWEpsSUd4dmIydHBibWNnWm05eUlITnZiV1YwYUdsdVp5QjBhR0YwSUdsemJpWWpNRE01TzNRZ2FHVnlaUzQ4TDJnelBqd3ZaR2wyUGp4MWJBcHBaRDBpYVc1bWFXNXBkR1V0WVhKMGFXTnNaWE1pSUdOc1lYTnpQU0puY21sa1gyeHBjM1FnYW5NdGJXRnpiMjV5ZVNJZ1pHRjBZUzF0WVhOdmJuSjVMVzl3ZEdsdmJuTTlKM3NnSW1OdmJIVnRibGRwWkhSb0lqb2dNQ0I5Sno0OEwzVnNQanhrYVhZS1kyeGhjM005SW1Oc1pXRnlJajQ4TDJScGRqNDhMMlJwZGo0OFpHbDJDbU5zWVhOelBTSmpiR1ZoY2lJK1BDOWthWFkrUEM5a2FYWStQR1p2YjNSbGNqNDhaR2wyQ21Oc1lYTnpQU0p6YjJOcFlXd3RjMlZqZEdsdmJpSStQSFZzQ21Oc1lYTnpQU0ptYjI5MFpYSXRjMjlqYVdGc0lqNDhiR2srUEdFS2FISmxaajBpYUhSMGNITTZMeTkzZDNjdVptRmpaV0p2YjJzdVkyOXRMM0J1WjNCcGVDSWdkR0Z5WjJWMFBTSmZZbXhoYm1zaVBqeHBDbU5zWVhOelBTSm1ZU0JtWVMxbVlXTmxZbTl2YXlJK1BDOXBQand2WVQ0OEwyeHBQanhzYVQ0OFlRcG9jbVZtUFNKb2RIUndjem92TDNSM2FYUjBaWEl1WTI5dEwzQnVaM0JwZUdOdmJTSWdkR0Z5WjJWMFBTSmZZbXhoYm1zaVBqeHBDbU5zWVhOelBTSm1ZU0JtWVMxMGQybDBkR1Z5SWo0OEwyaytDand2WVQ0OEwyeHBQanhzYVQ0OFlRcG9jbVZtUFNKb2RIUndjem92TDNkM2R5NXdhVzUwWlhKbGMzUXVZMjl0TDNCdVozQnBlR052YlM4aUlIUmhjbWRsZEQwaVgySnNZVzVySWo0OGFRcGpiR0Z6Y3owaVptRWdabUV0Y0dsdWRHVnlaWE4wSWo0OEwyaytQQzloUGp3dmJHaytQR3hwUGp4aENtaHlaV1k5SWlNaVBqeHBDbU5zWVhOelBTSm1ZU0JtWVMxbmIyOW5iR1V0Y0d4MWN5SStQQzlwUGp3dllUNDhMMnhwUGp4c2FUNDhZUXBvY21WbVBTSWpJajQ4YVFwamJHRnpjejBpWm1FZ1ptRXRlVzkxZEhWaVpTSStQQzlwUGp3dllUNDhMMnhwUGp3dmRXdytQQzlrYVhZK1BHUnBkZ3BqYkdGemN6MGlkM0poY0MxbWIyOTBaWElpUGp4a2FYWUtZMnhoYzNNOUltTnZjSGx5YVdkb2RDSStDa052Y0hseWFXZG9kQ0RDcVNBeU1ERTRJRkJ1WjFCcGVDQThZUXBvY21WbVBTSWpJajVCWW05MWREd3ZZVDRnZkNBOFlRcG9jbVZtUFNJaklqNU1hV05sYm5ObFBDOWhQaUI4SUR4aENtaHlaV1k5SWlNaVBsUmxjbTF6SUc5bUlGTmxjblpwWTJVOEwyRStJSHdnUEdFS2FISmxaajBpSXlJK1JFMURRU0JEYjNCNWNtbG5hSFFnVUc5c2FXTjVQQzloUGp3dlpHbDJQand2WkdsMlBqeHdDbWxrUFNKaVlXTnJMWFJ2Y0NJK1BHRUthSEpsWmowaUkzUnZjQ0krUEhOd1lXNCtQQzl6Y0dGdVBqd3ZZVDQ4TDNBK0Nqd3ZabTl2ZEdWeVBpQThjMk55YVhCMElIUjVjR1U5SW5SbGVIUXZhbUYyWVhOamNtbHdkQ0krZG1GeUlHcHhkV1Z5ZVdOemMyMWxiblU5ZTJaaFpHVnpaWFIwYVc1bmN6cDdiM1psY21SMWNtRjBhVzl1T2pBc2IzVjBaSFZ5WVhScGIyNDZNVEF3ZlN4aWRXbHNaRzFsYm5VNlpuVnVZM1JwYjI0b1lpeGhLWHRxVVhWbGNua29aRzlqZFcxbGJuUXBMbkpsWVdSNUtHWjFibU4wYVc5dUtHVXBlM1poY2lCalBXVW9JaU1pSzJJcklqNTFiQ0lwTzNaaGNpQmtQV011Wm1sdVpDZ2lkV3dpS1M1d1lYSmxiblFvS1R0a0xtVmhZMmdvWm5WdVkzUnBiMjRvWnlsN2RtRnlJR2c5WlNoMGFHbHpLVHQyWVhJZ1pqMWxLSFJvYVhNcExtWnBibVFvSW5Wc09tVnhLREFwSWlrN2RHaHBjeTVmWkdsdFpXNXphVzl1Y3oxN2R6cDBhR2x6TG05bVpuTmxkRmRwWkhSb0xHZzZkR2hwY3k1dlptWnpaWFJJWldsbmFIUXNjM1ZpZFd4M09tWXViM1YwWlhKWGFXUjBhQ2dwTEhOMVluVnNhRHBtTG05MWRHVnlTR1ZwWjJoMEtDbDlPM1JvYVhNdWFYTjBiM0JvWldGa1pYSTlhQzV3WVhKbGJuUnpLQ0oxYkNJcExteGxibWQwYUQwOU1UOTBjblZsT21aaGJITmxPMll1WTNOektIdDBiM0E2ZEdocGN5NXBjM1J2Y0dobFlXUmxjajkwYUdsekxsOWthVzFsYm5OcGIyNXpMbWdySW5CNElqb3dmU2s3YUM1amFHbHNaSEpsYmlnaVlUcGxjU2d3S1NJcExtTnpjeWgwYUdsekxtbHpkRzl3YUdWaFpHVnlQM3R3WVdSa2FXNW5VbWxuYUhRNllTNWtiM2R1V3pKZGZUcDdmU2t1WVhCd1pXNWtLQ2M4YVcxbklITnlZejBpSnlzb2RHaHBjeTVwYzNSdmNHaGxZV1JsY2o5aExtUnZkMjViTVYwNllTNXlhV2RvZEZzeFhTa3JKeUlnWTJ4aGMzTTlJaWNyS0hSb2FYTXVhWE4wYjNCb1pXRmtaWEkvWVM1a2IzZHVXekJkT21FdWNtbG5hSFJiTUYwcEt5Y2lJSE4wZVd4bFBTSmliM0prWlhJNk1Ec2lJQzgrSnlrN2FDNW9iM1psY2lobWRXNWpkR2x2YmlocUtYdDJZWElnYVQxbEtIUm9hWE1wTG1Ob2FXeGtjbVZ1S0NKMWJEcGxjU2d3S1NJcE8zUm9hWE11WDI5bVpuTmxkSE05ZTJ4bFpuUTZaU2gwYUdsektTNXZabVp6WlhRb0tTNXNaV1owTEhSdmNEcGxLSFJvYVhNcExtOW1abk5sZENncExuUnZjSDA3ZG1GeUlHczlkR2hwY3k1cGMzUnZjR2hsWVdSbGNqOHdPblJvYVhNdVgyUnBiV1Z1YzJsdmJuTXVkenRyUFNoMGFHbHpMbDl2Wm1aelpYUnpMbXhsWm5RcmF5dDBhR2x6TGw5a2FXMWxibk5wYjI1ekxuTjFZblZzZHo1bEtIZHBibVJ2ZHlrdWQybGtkR2dvS1NrL0tIUm9hWE11YVhOMGIzQm9aV0ZrWlhJL0xYUm9hWE11WDJScGJXVnVjMmx2Ym5NdWMzVmlkV3gzSzNSb2FYTXVYMlJwYldWdWMybHZibk11ZHpvdGRHaHBjeTVmWkdsdFpXNXphVzl1Y3k1M0tUcHJPMmt1WTNOektIdHNaV1owT21zckluQjRJbjBwTG1aaFpHVkpiaWhxY1hWbGNubGpjM050Wlc1MUxtWmhaR1Z6WlhSMGFXNW5jeTV2ZG1WeVpIVnlZWFJwYjI0cGZTeG1kVzVqZEdsdmJpaHBLWHRsS0hSb2FYTXBMbU5vYVd4a2NtVnVLQ0oxYkRwbGNTZ3dLU0lwTG1aaFpHVlBkWFFvYW5GMVpYSjVZM056YldWdWRTNW1ZV1JsYzJWMGRHbHVaM011YjNWMFpIVnlZWFJwYjI0cGZTbDlLVHRqTG1acGJtUW9JblZzSWlrdVkzTnpLSHRrYVhOd2JHRjVPaUp1YjI1bElpeDJhWE5wWW1sc2FYUjVPaUoyYVhOcFlteGxJbjBwZlNsOWZUdDJZWElnWVhKeWIzZHBiV0ZuWlhNOWUyUnZkMjQ2V3lka2IzZHVZWEp5YjNkamJHRnpjeWNzSjJoMGRIQnpPaTh2ZDNkM0xuQnVaM0JwZUM1amIyMHZkM0F0WTI5dWRHVnVkQzkwYUdWdFpYTXZjRzVuY0dsNEwybHRZV2RsY3k5dFpXNTFMMkZ5Y205M0xXUnZkMjR1Y0c1bkoxMHNjbWxuYUhRNld5ZHlhV2RvZEdGeWNtOTNZMnhoYzNNbkxDZG9kSFJ3Y3pvdkwzZDNkeTV3Ym1kd2FYZ3VZMjl0TDNkd0xXTnZiblJsYm5RdmRHaGxiV1Z6TDNCdVozQnBlQzlwYldGblpYTXZiV1Z1ZFM5aGNuSnZkeTF5YVdkb2RDNXdibWNuWFgwN2FuRjFaWEo1WTNOemJXVnVkUzVpZFdsc1pHMWxiblVvSW0xNWFuRjFaWEo1YldWdWRTSXNZWEp5YjNkcGJXRm5aWE1wTzJweGRXVnllV056YzIxbGJuVXVZblZwYkdSdFpXNTFLQ0p0ZVdweGRXVnllVzFsYm5VdFkyRjBJaXhoY25KdmQybHRZV2RsY3lrN1BDOXpZM0pwY0hRK0lEeHpZM0pwY0hRZ2RIbHdaVDBpZEdWNGRDOXFZWFpoYzJOeWFYQjBJajVxVVhWbGNua29aRzlqZFcxbGJuUXBMbkpsWVdSNUtHWjFibU4wYVc5dUtDUXBleVJyZDIxR2IzSmpaVVJ2ZDI1c2IyRmtQU1FvSW1KdlpIa2dZUzVyZDIwdFptOXlZMlV0Wkc5dWQyeHZZV1FpS1Rza2EzZHRSbTl5WTJWRWIzZHViRzloWkM1bFlXTm9LR1oxYm1OMGFXOXVLR2x1WkdWNEtYdDJZWElnYjJ4a1NISmxaajBrS0hSb2FYTXBMbVJoZEdFb0ltWnZjbU5sWkc5M2JteHZZV1FpS1Rza0tIUm9hWE1wTG5CeWIzQW9JbWh5WldZaUxDSm9kSFJ3Y3pvdkwzZDNkeTV3Ym1kd2FYZ3VZMjl0TDJSdmQyNXNiMkZrTHlJcmIyeGtTSEpsWmlrN2ZTazdmU2s3UEM5elkzSnBjSFErUEhOamNtbHdkQ0JzWVc1bmRXRm5aVDBpYW1GMllYTmpjbWx3ZENJZ2RIbHdaVDBpZEdWNGRDOXFZWFpoYzJOeWFYQjBJajUyWVhJZ2EzQm5YMk5sYkd3OUlrNGlPM1poY2lCcmNHZGZibkpqYVY5cGJXRm5aVDBpYUhSMGNEb3ZMM2QzZHk1d2JtZHdhWGd1WTI5dEwzZHdMV052Ym5SbGJuUXZjR3gxWjJsdWN5OXVieTF5YVdkb2RDMWpiR2xqYXkxcGJXRm5aWE10Y0d4MVoybHVMMjV2ZEM1bmFXWWlPM1poY2lCcmNHZGZibkpqYVY5bGVIUnlZVDBpVGlJN2RtRnlJR3R3WjE5dWNtTnBYMlJ5WVdjOUlsa2lPend2YzJOeWFYQjBQaUE4YzJOeWFYQjBJR3hoYm1kMVlXZGxQU0pxWVhaaGMyTnlhWEIwSWlCMGVYQmxQU0owWlhoMEwycGhkbUZ6WTNKcGNIUWlJSE55WXowaWFIUjBjRG92TDNkM2R5NXdibWR3YVhndVkyOXRMM2R3TFdOdmJuUmxiblF2Y0d4MVoybHVjeTl1YnkxeWFXZG9kQzFqYkdsamF5MXBiV0ZuWlhNdGNHeDFaMmx1TDI1dkxYSnBaMmgwTFdOc2FXTnJMV2x0WVdkbGN5NXFjeUkrUEM5elkzSnBjSFErSUR4elkzSnBjSFErYWxGMVpYSjVLR1J2WTNWdFpXNTBLUzV5WldGa2VTaG1kVzVqZEdsdmJpZ3BlMnBSZFdWeWVTNXdiM04wS0Nkb2RIUndjem92TDNkM2R5NXdibWR3YVhndVkyOXRQMmRoWDJGamRHbHZiajFuYjI5bmJHVmhibUZzZVhScFkzTmZaMlYwWDNOamNtbHdkQ2NzZTJGamRHbHZiam9uWjI5dloyeGxZVzVoYkhsMGFXTnpYMmRsZEY5elkzSnBjSFFuZlN4bWRXNWpkR2x2YmloeVpYTndiMjV6WlNsN2RtRnlJRVk5Ym1WM0lFWjFibU4wYVc5dUtISmxjM0J2Ym5ObEtUdHlaWFIxY200b1JpZ3BLVHQ5S1R0OUtUczhMM05qY21sd2RENDhaR2wyQ25OMGVXeGxQU0prYVhOd2JHRjVPbTV2Ym1VaVBqeGthWFlLYVdROUltRnlkbXhpWkdGMFlTSWdjM1I1YkdVOUltOTJaWEptYkc5M09uWnBjMmxpYkdVN2QybGtkR2c2TkRBd2NIZzdhR1ZwWjJoME9qSTFNSEI0T3lJK1BHUnBkZ3BoYkd4dmQzUnlZVzV6Y0dGeVpXNWplVDBpZEhKMVpTSWdjM1I1YkdVOUltOTJaWEptYkc5M09taHBaR1JsYmp0M2FXUjBhRG8wTURCd2VEdG9aV2xuYUhRNk1qVXdjSGc3SWlCamJHRnpjejBpWm1JdGNHRm5aU0lLWkdGMFlTMW9jbVZtUFNKb2RIUndjem92TDNkM2R5NW1ZV05sWW05dmF5NWpiMjB2Y0c1bmNHbDRJZ3BrWVhSaExYZHBaSFJvUFNJME1EQWlDbVJoZEdFdGFHVnBaMmgwUFNJeU5UQWlDbVJoZEdFdGMyMWhiR3d0YUdWaFpHVnlQU0ptWVd4elpTSUtaR0YwWVMxaFpHRndkQzFqYjI1MFlXbHVaWEl0ZDJsa2RHZzlJbVpoYkhObElncGtZWFJoTFdocFpHVXRZMjkyWlhJOUluUnlkV1VpQ21SaGRHRXRjMmh2ZHkxbVlXTmxjR2xzWlQwaWRISjFaU0lLWkdGMFlTMXphRzkzTFhCdmMzUnpQU0ptWVd4elpTSStQQzlrYVhZK1BDOWthWFkrUEM5a2FYWStJRHh6WTNKcGNIUWdkSGx3WlQwbmRHVjRkQzlxWVhaaGMyTnlhWEIwSnlCemNtTTlKMmgwZEhCek9pOHZkM2QzTG5CdVozQnBlQzVqYjIwdmQzQXRZMjl1ZEdWdWRDOTBhR1Z0WlhNdmNHNW5jR2w0TDI5M2JDMWpZWEp2ZFhObGJDOXZkMnd1WTJGeWIzVnpaV3d1YldsdUxtcHpQM1psY2owMExqa3VOQ2MrUEM5elkzSnBjSFErSUR4elkzSnBjSFFnZEhsd1pUMG5kR1Y0ZEM5cVlYWmhjMk55YVhCMEp5QnpjbU05SjJoMGRIQnpPaTh2ZDNkM0xuQnVaM0JwZUM1amIyMHZkM0F0WTI5dWRHVnVkQzkwYUdWdFpYTXZjRzVuY0dsNEwycHpMMnB4ZFdWeWVTNXRZV2x1TG1welAzWmxjajAwTGprdU5DYytQQzl6WTNKcGNIUStJRHh6WTNKcGNIUWdkSGx3WlQwbmRHVjRkQzlxWVhaaGMyTnlhWEIwSnlCemNtTTlKMmgwZEhCek9pOHZkM2QzTG5CdVozQnBlQzVqYjIwdmQzQXRZMjl1ZEdWdWRDOTBhR1Z0WlhNdmNHNW5jR2w0TDJwekwyTjFjM1J2YlM1cWN6OTJaWEk5TkM0NUxqUW5Qand2YzJOeWFYQjBQaUE4YzJOeWFYQjBJSFI1Y0dVOUozUmxlSFF2YW1GMllYTmpjbWx3ZENjZ2MzSmpQU2RvZEhSd2N6b3ZMM2QzZHk1d2JtZHdhWGd1WTI5dEwzZHdMV2x1WTJ4MVpHVnpMMnB6TDNkd0xXVnRZbVZrTG0xcGJpNXFjejkyWlhJOU5DNDVMalFuUGp3dmMyTnlhWEIwUGlBOEwySnZaSGsrUEM5b2RHMXNQZ284SVMwdENpb3FLaUJVYUdseklITnBkR1VnY25WdWN5QlhVQ0JUZFhCbGNpQk5hVzVwWm5rZ2NHeDFaMmx1SUhZeExqVXVNU0F0SUdoMGRIQTZMeTkzYjNKa2NISmxjM011YjNKbkwzQnNkV2RwYm5NdmQzQXRjM1Z3WlhJdGJXbHVhV1o1SUNvcUtnb3FLaW9nVkc5MFlXd2djMmw2WlNCellYWmxaRG9nTVRZdU1UZzBKU0I4SUZOcGVtVWdZbVZtYjNKbElHTnZiWEJ5WlhOemFXOXVPaUF5TURZNU9TQmllWFJsY3lCOElGTnBlbVVnWVdaMFpYSWdZMjl0Y0hKbGMzTnBiMjQ2SURFM016UTVJR0o1ZEdWekxpQXFLaW9LTFMwKyIsIm1lZGlhdHlwZSI6ImltYWdlL3BuZyJ9XSwiaW5zdGFsbCI6eyJzcGVjIjp7ImNsdXN0ZXJQZXJtaXNzaW9ucyI6W3sicnVsZXMiOlt7ImFwaUdyb3VwcyI6WyIiXSwicmVzb3VyY2VzIjpbInBlcnNpc3RlbnR2b2x1bWVjbGFpbXMiXSwidmVyYnMiOlsiZ2V0IiwibGlzdCIsInVwZGF0ZSIsIndhdGNoIl19LHsiYXBpR3JvdXBzIjpbIiJdLCJyZXNvdXJjZXMiOlsicGVyc2lzdGVudHZvbHVtZXMiXSwidmVyYnMiOlsiZ2V0IiwibGlzdCIsInBhdGNoIiwidXBkYXRlIiwid2F0Y2giXX0seyJhcGlHcm91cHMiOlsiIl0sInJlc291cmNlcyI6WyJzZXJ2aWNlcyJdLCJ2ZXJicyI6WyJjcmVhdGUiLCJkZWxldGUiLCJnZXQiLCJsaXN0IiwicGF0Y2giLCJ1cGRhdGUiLCJ3YXRjaCJdfSx7ImFwaUdyb3VwcyI6WyJhcHBzIl0sInJlc291cmNlcyI6WyJkZXBsb3ltZW50cyJdLCJ2ZXJicyI6WyJjcmVhdGUiLCJkZWxldGUiLCJnZXQiLCJsaXN0IiwicGF0Y2giLCJ1cGRhdGUiLCJ3YXRjaCJdfSx7ImFwaUdyb3VwcyI6WyJhcHBzIl0sInJlc291cmNlcyI6WyJkZXBsb3ltZW50cy9maW5hbGl6ZXJzIl0sInZlcmJzIjpbInVwZGF0ZSJdfSx7ImFwaUdyb3VwcyI6WyJjb25maWcub3BlbnNoaWZ0LmlvIl0sInJlc291cmNlcyI6WyJjbHVzdGVydmVyc2lvbnMiXSwidmVyYnMiOlsiY3JlYXRlIiwiZGVsZXRlIiwiZ2V0IiwibGlzdCIsInBhdGNoIiwidXBkYXRlIiwid2F0Y2giXX0seyJhcGlHcm91cHMiOlsiY29uZmlnLm9wZW5zaGlmdC5pbyJdLCJyZXNvdXJjZXMiOlsiY2x1c3RlcnZlcnNpb25zL2ZpbmFsaXplcnMiXSwidmVyYnMiOlsidXBkYXRlIl19LHsiYXBpR3JvdXBzIjpbImNvbmZpZy5vcGVuc2hpZnQuaW8iXSwicmVzb3VyY2VzIjpbImNsdXN0ZXJ2ZXJzaW9ucy9zdGF0dXMiXSwidmVyYnMiOlsiZ2V0IiwicGF0Y2giLCJ1cGRhdGUiXX0seyJhcGlHcm91cHMiOlsiY29uc29sZS5vcGVuc2hpZnQuaW8iXSwicmVzb3VyY2VzIjpbImNvbnNvbGVwbHVnaW5zIl0sInZlcmJzIjpbIioiXX0seyJhcGlHcm91cHMiOlsiIl0sInJlc291cmNlcyI6WyJjb25maWdtYXBzIl0sInZlcmJzIjpbImNyZWF0ZSIsImRlbGV0ZSIsImdldCIsImxpc3QiLCJwYXRjaCIsInVwZGF0ZSIsIndhdGNoIl19LHsiYXBpR3JvdXBzIjpbIiJdLCJyZXNvdXJjZXMiOlsiZXZlbnRzIl0sInZlcmJzIjpbImNyZWF0ZSIsImdldCIsImxpc3QiLCJwYXRjaCIsInVwZGF0ZSIsIndhdGNoIl19LHsiYXBpR3JvdXBzIjpbIiJdLCJyZXNvdXJjZXMiOlsibmFtZXNwYWNlcyJdLCJ2ZXJicyI6WyJnZXQiLCJsaXN0Il19LHsiYXBpR3JvdXBzIjpbIiJdLCJyZXNvdXJjZXMiOlsic2VjcmV0cyJdLCJ2ZXJicyI6WyJjcmVhdGUiLCJkZWxldGUiLCJnZXQiLCJsaXN0IiwicGF0Y2giLCJ1cGRhdGUiLCJ3YXRjaCJdfSx7ImFwaUdyb3VwcyI6WyIiXSwicmVzb3VyY2VzIjpbInNlcnZpY2VzIl0sInZlcmJzIjpbImNyZWF0ZSIsImRlbGV0ZSIsImdldCIsImxpc3QiLCJwYXRjaCIsInVwZGF0ZSIsIndhdGNoIl19LHsiYXBpR3JvdXBzIjpbImNzaS5pYm0uY29tIl0sInJlc291cmNlcyI6WyJpYm1ibG9ja2NzaXMiXSwidmVyYnMiOlsiY3JlYXRlIiwiZGVsZXRlIiwiZ2V0IiwibGlzdCIsInBhdGNoIiwidXBkYXRlIiwid2F0Y2giXX0seyJhcGlHcm91cHMiOlsibW9uaXRvcmluZy5jb3Jlb3MuY29tIl0sInJlc291cmNlcyI6WyJwcm9tZXRoZXVzcnVsZXMiLCJzZXJ2aWNlbW9uaXRvcnMiXSwidmVyYnMiOlsiY3JlYXRlIiwiZGVsZXRlIiwiZ2V0IiwibGlzdCIsInVwZGF0ZSIsIndhdGNoIl19LHsiYXBpR3JvdXBzIjpbIm9kZi5pYm0uY29tIl0sInJlc291cmNlcyI6WyJmbGFzaHN5c3RlbWNsdXN0ZXJzIl0sInZlcmJzIjpbImNyZWF0ZSIsImRlbGV0ZSIsImdldCIsImxpc3QiLCJwYXRjaCIsInVwZGF0ZSIsIndhdGNoIl19LHsiYXBpR3JvdXBzIjpbIm9kZi5pYm0uY29tIl0sInJlc291cmNlcyI6WyJmbGFzaHN5c3RlbWNsdXN0ZXJzL2ZpbmFsaXplcnMiXSwidmVyYnMiOlsidXBkYXRlIl19LHsiYXBpR3JvdXBzIjpbIm9kZi5pYm0uY29tIl0sInJlc291cmNlcyI6WyJmbGFzaHN5c3RlbWNsdXN0ZXJzL3N0YXR1cyJdLCJ2ZXJicyI6WyJnZXQiLCJwYXRjaCIsInVwZGF0ZSJdfSx7ImFwaUdyb3VwcyI6WyJvcGVyYXRvci5vcGVuc2hpZnQuaW8iXSwicmVzb3VyY2VzIjpbImNvbnNvbGVzIl0sInZlcmJzIjpbIioiXX0seyJhcGlHcm91cHMiOlsic2VjdXJpdHkub3BlbnNoaWZ0LmlvIl0sInJlc291cmNlcyI6WyJzZWN1cml0eWNvbnRleHRjb25zdHJhaW50cyJdLCJ2ZXJicyI6WyJjcmVhdGUiLCJnZXQiLCJ1cGRhdGUiXX0seyJhcGlHcm91cHMiOlsic3RvcmFnZS5rOHMuaW8iXSwicmVzb3VyY2VzIjpbInN0b3JhZ2VjbGFzc2VzIl0sInZlcmJzIjpbImNyZWF0ZSIsImRlbGV0ZSIsImdldCIsImxpc3QiLCJwYXRjaCIsInVwZGF0ZSIsIndhdGNoIl19LHsiYXBpR3JvdXBzIjpbImF1dGhlbnRpY2F0aW9uLms4cy5pbyJdLCJyZXNvdXJjZXMiOlsidG9rZW5yZXZpZXdzIl0sInZlcmJzIjpbImNyZWF0ZSJdfSx7ImFwaUdyb3VwcyI6WyJhdXRob3JpemF0aW9uLms4cy5pbyJdLCJyZXNvdXJjZXMiOlsic3ViamVjdGFjY2Vzc3Jldmlld3MiXSwidmVyYnMiOlsiY3JlYXRlIl19XSwic2VydmljZUFjY291bnROYW1lIjoiaWJtLXN0b3JhZ2Utb2RmLW9wZXJhdG9yIn1dLCJkZXBsb3ltZW50cyI6W3sibGFiZWwiOnsib2RmIjoic3RvcmFnZS5pYm0uY29tIn0sIm5hbWUiOiJpYm0tc3RvcmFnZS1vZGYtb3BlcmF0b3IiLCJzcGVjIjp7InJlcGxpY2FzIjoxLCJzZWxlY3RvciI6eyJtYXRjaExhYmVscyI6eyJvZGYiOiJzdG9yYWdlLmlibS5jb20ifX0sInN0cmF0ZWd5Ijp7fSwidGVtcGxhdGUiOnsibWV0YWRhdGEiOnsibGFiZWxzIjp7Im9kZiI6InN0b3JhZ2UuaWJtLmNvbSJ9fSwic3BlYyI6eyJjb250YWluZXJzIjpbeyJhcmdzIjpbIi0tc2VjdXJlLWxpc3Rlbi1hZGRyZXNzPTAuMC4wLjA6ODQ0MyIsIi0tdXBzdHJlYW09aHR0cDovLzEyNy4wLjAuMTo4MDgwLyIsIi0tbG9ndG9zdGRlcnI9dHJ1ZSIsIi0tdj0wIl0sImltYWdlIjoicmVnaXN0cnkucmVkaGF0LmlvL29wZW5zaGlmdDQvb3NlLWt1YmUtcmJhYy1wcm94eTp2NC4xMSIsIm5hbWUiOiJrdWJlLXJiYWMtcHJveHkiLCJwb3J0cyI6W3siY29udGFpbmVyUG9ydCI6ODQ0MywibmFtZSI6Imh0dHBzIn1dLCJyZXNvdXJjZXMiOnt9LCJzZWN1cml0eUNvbnRleHQiOnsiYWxsb3dQcml2aWxlZ2VFc2NhbGF0aW9uIjpmYWxzZSwiY2FwYWJpbGl0aWVzIjp7ImRyb3AiOlsiYWxsIl19fX0seyJhcmdzIjpbIi0taGVhbHRoLXByb2JlLWJpbmQtYWRkcmVzcz06ODA4MSIsIi0tbWV0cmljcy1iaW5kLWFkZHJlc3M9MTI3LjAuMC4xOjgwODAiLCItLWxlYWRlci1lbGVjdCIsIi0tY29uc29sZS1wb3J0PTkwMDMiXSwiY29tbWFuZCI6WyIvbWFuYWdlciJdLCJlbnYiOlt7Im5hbWUiOiJFWFBPUlRFUl9JTUFHRSIsInZhbHVlIjoicXVheS5pby9pYm1vZGZmcy9pYm0tc3RvcmFnZS1vZGYtYmxvY2stZHJpdmVyOjEuNS4wIn0seyJuYW1lIjoiUkVTT1VSQ0VTX05BTUVTUEFDRSIsInZhbHVlRnJvbSI6eyJmaWVsZFJlZiI6eyJmaWVsZFBhdGgiOiJtZXRhZGF0YS5hbm5vdGF0aW9uc1snb2xtLm9wZXJhdG9yTmFtZXNwYWNlJ10ifX19XSwiaW1hZ2UiOiJxdWF5LmlvL2libW9kZmZzL2libS1zdG9yYWdlLW9kZi1vcGVyYXRvcjoxLjUuMCIsImltYWdlUHVsbFBvbGljeSI6IkFsd2F5cyIsImxpdmVuZXNzUHJvYmUiOnsiaHR0cEdldCI6eyJwYXRoIjoiL2hlYWx0aHoiLCJwb3J0Ijo4MDgxfSwiaW5pdGlhbERlbGF5U2Vjb25kcyI6MTUsInBlcmlvZFNlY29uZHMiOjIwfSwibmFtZSI6Im1hbmFnZXIiLCJyZWFkaW5lc3NQcm9iZSI6eyJodHRwR2V0Ijp7InBhdGgiOiIvcmVhZHl6IiwicG9ydCI6ODA4MX0sImluaXRpYWxEZWxheVNlY29uZHMiOjUsInBlcmlvZFNlY29uZHMiOjEwfSwicmVzb3VyY2VzIjp7ImxpbWl0cyI6eyJjcHUiOiIxMDBtIiwibWVtb3J5IjoiMzAwTWkifSwicmVxdWVzdHMiOnsiY3B1IjoiMTAwbSIsIm1lbW9yeSI6IjIwME1pIn19LCJzZWN1cml0eUNvbnRleHQiOnsiYWxsb3dQcml2aWxlZ2VFc2NhbGF0aW9uIjpmYWxzZSwiY2FwYWJpbGl0aWVzIjp7ImRyb3AiOlsiYWxsIl19fSwidm9sdW1lTW91bnRzIjpbeyJtb3VudFBhdGgiOiIvY29uZmlnIiwibmFtZSI6Im1hbmFnZXItY29uZmlnIn1dfV0sInNlY3VyaXR5Q29udGV4dCI6eyJydW5Bc05vblJvb3QiOnRydWV9LCJzZXJ2aWNlQWNjb3VudE5hbWUiOiJpYm0tc3RvcmFnZS1vZGYtb3BlcmF0b3IiLCJ0ZXJtaW5hdGlvbkdyYWNlUGVyaW9kU2Vjb25kcyI6MTAsInZvbHVtZXMiOlt7ImNvbmZpZ01hcCI6eyJuYW1lIjoiZmxhc2hzeXN0ZW0tY3NpLWNyIn0sIm5hbWUiOiJtYW5hZ2VyLWNvbmZpZyJ9XX19fX0seyJsYWJlbCI6eyJhcHAiOiJpYm0tb2RmLWNvbnNvbGUifSwibmFtZSI6ImlibS1vZGYtY29uc29sZSIsInNwZWMiOnsic2VsZWN0b3IiOnsibWF0Y2hMYWJlbHMiOnsiYXBwIjoiaWJtLW9kZi1jb25zb2xlIn19LCJzdHJhdGVneSI6e30sInRlbXBsYXRlIjp7Im1ldGFkYXRhIjp7ImxhYmVscyI6eyJhcHAiOiJpYm0tb2RmLWNvbnNvbGUifX0sInNwZWMiOnsiY29udGFpbmVycyI6W3siaW1hZ2UiOiJxdWF5LmlvL2libW9kZmZzL2libS1zdG9yYWdlLW9kZi1wbHVnaW46MS41LjAiLCJuYW1lIjoiaWJtLW9kZi1jb25zb2xlIiwicG9ydHMiOlt7ImNvbnRhaW5lclBvcnQiOjkwMDMsInByb3RvY29sIjoiVENQIn1dLCJyZXNvdXJjZXMiOnsibGltaXRzIjp7ImNwdSI6IjUwbSIsIm1lbW9yeSI6IjEwME1pIn19LCJzZWN1cml0eUNvbnRleHQiOnsiYWxsb3dQcml2aWxlZ2VFc2NhbGF0aW9uIjpmYWxzZSwiY2FwYWJpbGl0aWVzIjp7ImRyb3AiOlsiYWxsIl19fSwidm9sdW1lTW91bnRzIjpbeyJtb3VudFBhdGgiOiIvdmFyL3NlcnZpbmctY2VydCIsIm5hbWUiOiJpYm0tb2RmLWNvbnNvbGUtc2VydmluZy1jZXJ0IiwicmVhZE9ubHkiOnRydWV9XX1dLCJzZWN1cml0eUNvbnRleHQiOnsicnVuQXNOb25Sb290Ijp0cnVlfSwidm9sdW1lcyI6W3sibmFtZSI6ImlibS1vZGYtY29uc29sZS1zZXJ2aW5nLWNlcnQiLCJzZWNyZXQiOnsic2VjcmV0TmFtZSI6ImlibS1vZGYtY29uc29sZS1zZXJ2aW5nLWNlcnQifX1dfX19fV0sInBlcm1pc3Npb25zIjpbeyJydWxlcyI6W3siYXBpR3JvdXBzIjpbIm1vbml0b3JpbmcuY29yZW9zLmNvbSJdLCJyZXNvdXJjZXMiOlsiKiJdLCJ2ZXJicyI6WyIqIl19LHsiYXBpR3JvdXBzIjpbIiIsImNvb3JkaW5hdGlvbi5rOHMuaW8iXSwicmVzb3VyY2VzIjpbImNvbmZpZ21hcHMiLCJsZWFzZXMiXSwidmVyYnMiOlsiZ2V0IiwibGlzdCIsIndhdGNoIiwiY3JlYXRlIiwidXBkYXRlIiwicGF0Y2giLCJkZWxldGUiXX0seyJhcGlHcm91cHMiOlsiIl0sInJlc291cmNlcyI6WyJldmVudHMiXSwidmVyYnMiOlsiY3JlYXRlIiwicGF0Y2giXX1dLCJzZXJ2aWNlQWNjb3VudE5hbWUiOiJpYm0tc3RvcmFnZS1vZGYtb3BlcmF0b3IifV19LCJzdHJhdGVneSI6ImRlcGxveW1lbnQifSwiaW5zdGFsbE1vZGVzIjpbeyJzdXBwb3J0ZWQiOnRydWUsInR5cGUiOiJPd25OYW1lc3BhY2UifSx7InN1cHBvcnRlZCI6dHJ1ZSwidHlwZSI6IlNpbmdsZU5hbWVzcGFjZSJ9LHsic3VwcG9ydGVkIjpmYWxzZSwidHlwZSI6Ik11bHRpTmFtZXNwYWNlIn0seyJzdXBwb3J0ZWQiOmZhbHNlLCJ0eXBlIjoiQWxsTmFtZXNwYWNlcyJ9XSwia2V5d29yZHMiOlsiT0RGIiwic3RvcmFnZSIsImJsb2NrIHN0b3JhZ2UiLCJmbGFzaHN5c3RlbSIsImlibSJdLCJsaW5rcyI6W3sibmFtZSI6IklCTSBTdG9yYWdlIE9ERiBPcGVyYXRvciIsInVybCI6Imh0dHBzOi8vZ2l0aHViLmNvbS9JQk0vaWJtLXN0b3JhZ2Utb2RmLW9wZXJhdG9yIn1dLCJtYWludGFpbmVycyI6W3siZW1haWwiOiJzdXBwb3J0QGlibS5jb20iLCJuYW1lIjoiSUJNIFN1cHBvcnQifV0sIm1hdHVyaXR5IjoiYWxwaGEiLCJwcm92aWRlciI6eyJuYW1lIjoiSUJNIn0sInZlcnNpb24iOiIxLjUuMCJ9fQ== - type: olm.bundle.object value: data: eyJhcGlWZXJzaW9uIjoicmJhYy5hdXRob3JpemF0aW9uLms4cy5pby92MSIsImtpbmQiOiJDbHVzdGVyUm9sZSIsIm1ldGFkYXRhIjp7ImNyZWF0aW9uVGltZXN0YW1wIjpudWxsLCJuYW1lIjoibWV0cmljcy1yZWFkZXIifSwicnVsZXMiOlt7Im5vblJlc291cmNlVVJMcyI6WyIvbWV0cmljcyJdLCJ2ZXJicyI6WyJnZXQiXX1dfQ== - type: olm.bundle.object value: - data: eyJhcGlWZXJzaW9uIjoiYXBpZXh0ZW5zaW9ucy5rOHMuaW8vdjEiLCJraW5kIjoiQ3VzdG9tUmVzb3VyY2VEZWZpbml0aW9uIiwibWV0YWRhdGEiOnsiYW5ub3RhdGlvbnMiOnsiY29udHJvbGxlci1nZW4ua3ViZWJ1aWxkZXIuaW8vdmVyc2lvbiI6InYwLjQuMSJ9LCJjcmVhdGlvblRpbWVzdGFtcCI6bnVsbCwibmFtZSI6ImZsYXNoc3lzdGVtY2x1c3RlcnMub2RmLmlibS5jb20ifSwic3BlYyI6eyJncm91cCI6Im9kZi5pYm0uY29tIiwibmFtZXMiOnsia2luZCI6IkZsYXNoU3lzdGVtQ2x1c3RlciIsImxpc3RLaW5kIjoiRmxhc2hTeXN0ZW1DbHVzdGVyTGlzdCIsInBsdXJhbCI6ImZsYXNoc3lzdGVtY2x1c3RlcnMiLCJzaW5ndWxhciI6ImZsYXNoc3lzdGVtY2x1c3RlciJ9LCJzY29wZSI6Ik5hbWVzcGFjZWQiLCJ2ZXJzaW9ucyI6W3siYWRkaXRpb25hbFByaW50ZXJDb2x1bW5zIjpbeyJqc29uUGF0aCI6Ii5tZXRhZGF0YS5jcmVhdGlvblRpbWVzdGFtcCIsIm5hbWUiOiJBZ2UiLCJ0eXBlIjoiZGF0ZSJ9LHsiZGVzY3JpcHRpb24iOiJDdXJyZW50IFBoYXNlIiwianNvblBhdGgiOiIuc3RhdHVzLnBoYXNlIiwibmFtZSI6IlBoYXNlIiwidHlwZSI6InN0cmluZyJ9LHsianNvblBhdGgiOiIubWV0YWRhdGEuY3JlYXRpb25UaW1lc3RhbXAiLCJuYW1lIjoiQ3JlYXRlZCBBdCIsInR5cGUiOiJzdHJpbmcifV0sIm5hbWUiOiJ2MWFscGhhMSIsInNjaGVtYSI6eyJvcGVuQVBJVjNTY2hlbWEiOnsiZGVzY3JpcHRpb24iOiJGbGFzaFN5c3RlbUNsdXN0ZXIgaXMgdGhlIFNjaGVtYSBmb3IgdGhlIEZsYXNoU3lzdGVtQ2x1c3RlcnMgQVBJIiwicHJvcGVydGllcyI6eyJhcGlWZXJzaW9uIjp7ImRlc2NyaXB0aW9uIjoiQVBJVmVyc2lvbiBkZWZpbmVzIHRoZSB2ZXJzaW9uZWQgc2NoZW1hIG9mIHRoaXMgcmVwcmVzZW50YXRpb24gb2YgYW4gb2JqZWN0LiBTZXJ2ZXJzIHNob3VsZCBjb252ZXJ0IHJlY29nbml6ZWQgc2NoZW1hcyB0byB0aGUgbGF0ZXN0IGludGVybmFsIHZhbHVlLCBhbmQgbWF5IHJlamVjdCB1bnJlY29nbml6ZWQgdmFsdWVzLiBNb3JlIGluZm86IGh0dHBzOi8vZ2l0Lms4cy5pby9jb21tdW5pdHkvY29udHJpYnV0b3JzL2RldmVsL3NpZy1hcmNoaXRlY3R1cmUvYXBpLWNvbnZlbnRpb25zLm1kI3Jlc291cmNlcyIsInR5cGUiOiJzdHJpbmcifSwia2luZCI6eyJkZXNjcmlwdGlvbiI6IktpbmQgaXMgYSBzdHJpbmcgdmFsdWUgcmVwcmVzZW50aW5nIHRoZSBSRVNUIHJlc291cmNlIHRoaXMgb2JqZWN0IHJlcHJlc2VudHMuIFNlcnZlcnMgbWF5IGluZmVyIHRoaXMgZnJvbSB0aGUgZW5kcG9pbnQgdGhlIGNsaWVudCBzdWJtaXRzIHJlcXVlc3RzIHRvLiBDYW5ub3QgYmUgdXBkYXRlZC4gSW4gQ2FtZWxDYXNlLiBNb3JlIGluZm86IGh0dHBzOi8vZ2l0Lms4cy5pby9jb21tdW5pdHkvY29udHJpYnV0b3JzL2RldmVsL3NpZy1hcmNoaXRlY3R1cmUvYXBpLWNvbnZlbnRpb25zLm1kI3R5cGVzLWtpbmRzIiwidHlwZSI6InN0cmluZyJ9LCJtZXRhZGF0YSI6eyJ0eXBlIjoib2JqZWN0In0sInNwZWMiOnsiZGVzY3JpcHRpb24iOiJGbGFzaFN5c3RlbUNsdXN0ZXJTcGVjIGRlZmluZXMgdGhlIGRlc2lyZWQgc3RhdGUgb2YgRmxhc2hTeXN0ZW1DbHVzdGVyIiwicHJvcGVydGllcyI6eyJkZWZhdWx0UG9vbCI6eyJkZXNjcmlwdGlvbiI6IkRlZmF1bHRQb29sIGhhcyB0aGUgY29uZmlndXJhdGlvbiB0byBjcmVhdGUgZGVmYXVsdCBzdG9yYWdlIGNsYXNzIiwicHJvcGVydGllcyI6eyJmc1R5cGUiOnsiZW51bSI6WyJleHQ0IiwieGZzIl0sInR5cGUiOiJzdHJpbmcifSwicG9vbE5hbWUiOnsidHlwZSI6InN0cmluZyJ9LCJzcGFjZUVmZmljaWVuY3kiOnsiZW51bSI6WyJ0aGljayIsInRoaW4iLCJjb21wcmVzc2VkIiwiZGVkdXBsaWNhdGVkIl0sInR5cGUiOiJzdHJpbmcifSwic3RvcmFnZWNsYXNzTmFtZSI6eyJ0eXBlIjoic3RyaW5nIn0sInZvbHVtZU5hbWVQcmVmaXgiOnsibWF4TGVuZ3RoIjoyMCwidHlwZSI6InN0cmluZyJ9fSwicmVxdWlyZWQiOlsicG9vbE5hbWUiLCJzdG9yYWdlY2xhc3NOYW1lIl0sInR5cGUiOiJvYmplY3QifSwiaW5zZWN1cmVTa2lwVmVyaWZ5Ijp7ImRlc2NyaXB0aW9uIjoiSW5zZWN1cmVTa2lwVmVyaWZ5IGRpc2FibGVzIHRhcmdldCBjZXJ0aWZpY2F0ZSB2YWxpZGF0aW9uIGlmIHRydWUiLCJ0eXBlIjoiYm9vbGVhbiJ9LCJuYW1lIjp7ImRlc2NyaXB0aW9uIjoiTmFtZSBpcyB0aGUgbmFtZSBvZiB0aGUgZmxhc2hzeXN0ZW0gc3RvcmFnZSBjbHVzdGVyIiwidHlwZSI6InN0cmluZyJ9LCJzZWNyZXQiOnsiZGVzY3JpcHRpb24iOiJTZWNyZXQgcmVmZXJzIHRvIGEgc2VjcmV0IHRoYXQgaGFzIHRoZSBjcmVkZW50aWFscyBmb3IgRmxhc2hTeXN0ZW0gY3NpIFN0b3JhZ2VDbGFzcyIsInByb3BlcnRpZXMiOnsibmFtZSI6eyJkZXNjcmlwdGlvbiI6Ik5hbWUgaXMgdW5pcXVlIHdpdGhpbiBhIG5hbWVzcGFjZSB0byByZWZlcmVuY2UgYSBzZWNyZXQgcmVzb3VyY2UuIiwidHlwZSI6InN0cmluZyJ9LCJuYW1lc3BhY2UiOnsiZGVzY3JpcHRpb24iOiJOYW1lc3BhY2UgZGVmaW5lcyB0aGUgc3BhY2Ugd2l0aGluIHdoaWNoIHRoZSBzZWNyZXQgbmFtZSBtdXN0IGJlIHVuaXF1ZS4iLCJ0eXBlIjoic3RyaW5nIn19LCJ0eXBlIjoib2JqZWN0In19LCJyZXF1aXJlZCI6WyJuYW1lIiwic2VjcmV0Il0sInR5cGUiOiJvYmplY3QifSwic3RhdHVzIjp7ImRlc2NyaXB0aW9uIjoiRmxhc2hTeXN0ZW1DbHVzdGVyU3RhdHVzIGRlZmluZXMgdGhlIG9ic2VydmVkIHN0YXRlIG9mIEZsYXNoU3lzdGVtQ2x1c3RlciIsInByb3BlcnRpZXMiOnsiY29uZGl0aW9ucyI6eyJkZXNjcmlwdGlvbiI6IkNvbmRpdGlvbnMgZGVzY3JpYmVzIHRoZSBzdGF0ZSBvZiB0aGUgRmxhc2hTeXN0ZW1DbHVzdGVyIHJlc291cmNlLiIsIml0ZW1zIjp7ImRlc2NyaXB0aW9uIjoiQ29uZGl0aW9uIHJlcHJlc2VudHMgdGhlIHN0YXRlIG9mIHRoZSBvcGVyYXRvcidzIHJlY29uY2lsaWF0aW9uIGZ1bmN0aW9uYWxpdHkuIiwicHJvcGVydGllcyI6eyJsYXN0SGVhcnRiZWF0VGltZSI6eyJmb3JtYXQiOiJkYXRlLXRpbWUiLCJ0eXBlIjoic3RyaW5nIn0sImxhc3RUcmFuc2l0aW9uVGltZSI6eyJmb3JtYXQiOiJkYXRlLXRpbWUiLCJ0eXBlIjoic3RyaW5nIn0sIm1lc3NhZ2UiOnsidHlwZSI6InN0cmluZyJ9LCJyZWFzb24iOnsidHlwZSI6InN0cmluZyJ9LCJzdGF0dXMiOnsidHlwZSI6InN0cmluZyJ9LCJ0eXBlIjp7ImRlc2NyaXB0aW9uIjoiQ29uZGl0aW9uVHlwZSBpcyB0aGUgc3RhdGUgb2YgdGhlIG9wZXJhdG9yJ3MgcmVjb25jaWxpYXRpb24gZnVuY3Rpb25hbGl0eS4iLCJ0eXBlIjoic3RyaW5nIn19LCJyZXF1aXJlZCI6WyJzdGF0dXMiLCJ0eXBlIl0sInR5cGUiOiJvYmplY3QifSwidHlwZSI6ImFycmF5In0sInBoYXNlIjp7ImRlc2NyaXB0aW9uIjoiUGhhc2UgZGVzY3JpYmVzIHRoZSBQaGFzZSBvZiBGbGFzaFN5c3RlbUNsdXN0ZXIgVGhpcyBpcyB1c2VkIGJ5IE9MTSBVSSB0byBwcm92aWRlIHN0YXR1cyBpbmZvcm1hdGlvbiB0byB0aGUgdXNlciIsInR5cGUiOiJzdHJpbmcifX0sInR5cGUiOiJvYmplY3QifX0sInR5cGUiOiJvYmplY3QifX0sInNlcnZlZCI6dHJ1ZSwic3RvcmFnZSI6dHJ1ZSwic3VicmVzb3VyY2VzIjp7InN0YXR1cyI6e319fV19LCJzdGF0dXMiOnsiYWNjZXB0ZWROYW1lcyI6eyJraW5kIjoiIiwicGx1cmFsIjoiIn0sImNvbmRpdGlvbnMiOltdLCJzdG9yZWRWZXJzaW9ucyI6W119fQ== + data: eyJhcGlWZXJzaW9uIjoiYXBpZXh0ZW5zaW9ucy5rOHMuaW8vdjEiLCJraW5kIjoiQ3VzdG9tUmVzb3VyY2VEZWZpbml0aW9uIiwibWV0YWRhdGEiOnsiYW5ub3RhdGlvbnMiOnsiY29udHJvbGxlci1nZW4ua3ViZWJ1aWxkZXIuaW8vdmVyc2lvbiI6InYwLjQuMSJ9LCJjcmVhdGlvblRpbWVzdGFtcCI6bnVsbCwibmFtZSI6ImZsYXNoc3lzdGVtY2x1c3RlcnMub2RmLmlibS5jb20ifSwic3BlYyI6eyJncm91cCI6Im9kZi5pYm0uY29tIiwibmFtZXMiOnsia2luZCI6IkZsYXNoU3lzdGVtQ2x1c3RlciIsImxpc3RLaW5kIjoiRmxhc2hTeXN0ZW1DbHVzdGVyTGlzdCIsInBsdXJhbCI6ImZsYXNoc3lzdGVtY2x1c3RlcnMiLCJzaW5ndWxhciI6ImZsYXNoc3lzdGVtY2x1c3RlciJ9LCJzY29wZSI6Ik5hbWVzcGFjZWQiLCJ2ZXJzaW9ucyI6W3siYWRkaXRpb25hbFByaW50ZXJDb2x1bW5zIjpbeyJqc29uUGF0aCI6Ii5tZXRhZGF0YS5jcmVhdGlvblRpbWVzdGFtcCIsIm5hbWUiOiJBZ2UiLCJ0eXBlIjoiZGF0ZSJ9LHsiZGVzY3JpcHRpb24iOiJDdXJyZW50IFBoYXNlIiwianNvblBhdGgiOiIuc3RhdHVzLnBoYXNlIiwibmFtZSI6IlBoYXNlIiwidHlwZSI6InN0cmluZyJ9LHsianNvblBhdGgiOiIubWV0YWRhdGEuY3JlYXRpb25UaW1lc3RhbXAiLCJuYW1lIjoiQ3JlYXRlZCBBdCIsInR5cGUiOiJzdHJpbmcifV0sIm5hbWUiOiJ2MWFscGhhMSIsInNjaGVtYSI6eyJvcGVuQVBJVjNTY2hlbWEiOnsiZGVzY3JpcHRpb24iOiJGbGFzaFN5c3RlbUNsdXN0ZXIgaXMgdGhlIFNjaGVtYSBmb3IgdGhlIEZsYXNoU3lzdGVtQ2x1c3RlcnMgQVBJIiwicHJvcGVydGllcyI6eyJhcGlWZXJzaW9uIjp7ImRlc2NyaXB0aW9uIjoiQVBJVmVyc2lvbiBkZWZpbmVzIHRoZSB2ZXJzaW9uZWQgc2NoZW1hIG9mIHRoaXMgcmVwcmVzZW50YXRpb24gb2YgYW4gb2JqZWN0LiBTZXJ2ZXJzIHNob3VsZCBjb252ZXJ0IHJlY29nbml6ZWQgc2NoZW1hcyB0byB0aGUgbGF0ZXN0IGludGVybmFsIHZhbHVlLCBhbmQgbWF5IHJlamVjdCB1bnJlY29nbml6ZWQgdmFsdWVzLiBNb3JlIGluZm86IGh0dHBzOi8vZ2l0Lms4cy5pby9jb21tdW5pdHkvY29udHJpYnV0b3JzL2RldmVsL3NpZy1hcmNoaXRlY3R1cmUvYXBpLWNvbnZlbnRpb25zLm1kI3Jlc291cmNlcyIsInR5cGUiOiJzdHJpbmcifSwia2luZCI6eyJkZXNjcmlwdGlvbiI6IktpbmQgaXMgYSBzdHJpbmcgdmFsdWUgcmVwcmVzZW50aW5nIHRoZSBSRVNUIHJlc291cmNlIHRoaXMgb2JqZWN0IHJlcHJlc2VudHMuIFNlcnZlcnMgbWF5IGluZmVyIHRoaXMgZnJvbSB0aGUgZW5kcG9pbnQgdGhlIGNsaWVudCBzdWJtaXRzIHJlcXVlc3RzIHRvLiBDYW5ub3QgYmUgdXBkYXRlZC4gSW4gQ2FtZWxDYXNlLiBNb3JlIGluZm86IGh0dHBzOi8vZ2l0Lms4cy5pby9jb21tdW5pdHkvY29udHJpYnV0b3JzL2RldmVsL3NpZy1hcmNoaXRlY3R1cmUvYXBpLWNvbnZlbnRpb25zLm1kI3R5cGVzLWtpbmRzIiwidHlwZSI6InN0cmluZyJ9LCJtZXRhZGF0YSI6eyJ0eXBlIjoib2JqZWN0In0sInNwZWMiOnsiZGVzY3JpcHRpb24iOiJGbGFzaFN5c3RlbUNsdXN0ZXJTcGVjIGRlZmluZXMgdGhlIGRlc2lyZWQgc3RhdGUgb2YgRmxhc2hTeXN0ZW1DbHVzdGVyIiwicHJvcGVydGllcyI6eyJkZWZhdWx0UG9vbCI6eyJkZXNjcmlwdGlvbiI6IkRlZmF1bHRQb29sIGhhcyB0aGUgY29uZmlndXJhdGlvbiB0byBjcmVhdGUgZGVmYXVsdCBzdG9yYWdlIGNsYXNzIiwicHJvcGVydGllcyI6eyJmc1R5cGUiOnsiZW51bSI6WyJleHQ0IiwieGZzIl0sInR5cGUiOiJzdHJpbmcifSwicG9vbE5hbWUiOnsidHlwZSI6InN0cmluZyJ9LCJzcGFjZUVmZmljaWVuY3kiOnsiZW51bSI6WyJ0aGljayIsInRoaW4iLCJjb21wcmVzc2VkIiwiZGVkdXBsaWNhdGVkIl0sInR5cGUiOiJzdHJpbmcifSwic3RvcmFnZWNsYXNzTmFtZSI6eyJ0eXBlIjoic3RyaW5nIn0sInZvbHVtZU5hbWVQcmVmaXgiOnsibWF4TGVuZ3RoIjoyMCwidHlwZSI6InN0cmluZyJ9fSwicmVxdWlyZWQiOlsicG9vbE5hbWUiLCJzdG9yYWdlY2xhc3NOYW1lIl0sInR5cGUiOiJvYmplY3QifSwiaW5zZWN1cmVTa2lwVmVyaWZ5Ijp7ImRlc2NyaXB0aW9uIjoiSW5zZWN1cmVTa2lwVmVyaWZ5IGRpc2FibGVzIHRhcmdldCBjZXJ0aWZpY2F0ZSB2YWxpZGF0aW9uIGlmIHRydWUiLCJ0eXBlIjoiYm9vbGVhbiJ9LCJuYW1lIjp7ImRlc2NyaXB0aW9uIjoiTmFtZSBpcyB0aGUgbmFtZSBvZiB0aGUgZmxhc2hzeXN0ZW0gc3RvcmFnZSBjbHVzdGVyIiwidHlwZSI6InN0cmluZyJ9LCJzZWNyZXQiOnsiZGVzY3JpcHRpb24iOiJTZWNyZXQgcmVmZXJzIHRvIGEgc2VjcmV0IHRoYXQgaGFzIHRoZSBjcmVkZW50aWFscyBmb3IgRmxhc2hTeXN0ZW0gY3NpIFN0b3JhZ2VDbGFzcyIsInByb3BlcnRpZXMiOnsibmFtZSI6eyJkZXNjcmlwdGlvbiI6Im5hbWUgaXMgdW5pcXVlIHdpdGhpbiBhIG5hbWVzcGFjZSB0byByZWZlcmVuY2UgYSBzZWNyZXQgcmVzb3VyY2UuIiwidHlwZSI6InN0cmluZyJ9LCJuYW1lc3BhY2UiOnsiZGVzY3JpcHRpb24iOiJuYW1lc3BhY2UgZGVmaW5lcyB0aGUgc3BhY2Ugd2l0aGluIHdoaWNoIHRoZSBzZWNyZXQgbmFtZSBtdXN0IGJlIHVuaXF1ZS4iLCJ0eXBlIjoic3RyaW5nIn19LCJ0eXBlIjoib2JqZWN0In19LCJyZXF1aXJlZCI6WyJuYW1lIiwic2VjcmV0Il0sInR5cGUiOiJvYmplY3QifSwic3RhdHVzIjp7ImRlc2NyaXB0aW9uIjoiRmxhc2hTeXN0ZW1DbHVzdGVyU3RhdHVzIGRlZmluZXMgdGhlIG9ic2VydmVkIHN0YXRlIG9mIEZsYXNoU3lzdGVtQ2x1c3RlciIsInByb3BlcnRpZXMiOnsiY29uZGl0aW9ucyI6eyJkZXNjcmlwdGlvbiI6IkNvbmRpdGlvbnMgZGVzY3JpYmVzIHRoZSBzdGF0ZSBvZiB0aGUgRmxhc2hTeXN0ZW1DbHVzdGVyIHJlc291cmNlLiIsIml0ZW1zIjp7ImRlc2NyaXB0aW9uIjoiQ29uZGl0aW9uIHJlcHJlc2VudHMgdGhlIHN0YXRlIG9mIHRoZSBvcGVyYXRvcidzIHJlY29uY2lsaWF0aW9uIGZ1bmN0aW9uYWxpdHkuIiwicHJvcGVydGllcyI6eyJsYXN0SGVhcnRiZWF0VGltZSI6eyJmb3JtYXQiOiJkYXRlLXRpbWUiLCJ0eXBlIjoic3RyaW5nIn0sImxhc3RUcmFuc2l0aW9uVGltZSI6eyJmb3JtYXQiOiJkYXRlLXRpbWUiLCJ0eXBlIjoic3RyaW5nIn0sIm1lc3NhZ2UiOnsidHlwZSI6InN0cmluZyJ9LCJyZWFzb24iOnsidHlwZSI6InN0cmluZyJ9LCJzdGF0dXMiOnsidHlwZSI6InN0cmluZyJ9LCJ0eXBlIjp7ImRlc2NyaXB0aW9uIjoiQ29uZGl0aW9uVHlwZSBpcyB0aGUgc3RhdGUgb2YgdGhlIG9wZXJhdG9yJ3MgcmVjb25jaWxpYXRpb24gZnVuY3Rpb25hbGl0eS4iLCJ0eXBlIjoic3RyaW5nIn19LCJyZXF1aXJlZCI6WyJzdGF0dXMiLCJ0eXBlIl0sInR5cGUiOiJvYmplY3QifSwidHlwZSI6ImFycmF5In0sInBoYXNlIjp7ImRlc2NyaXB0aW9uIjoiUGhhc2UgZGVzY3JpYmVzIHRoZSBQaGFzZSBvZiBGbGFzaFN5c3RlbUNsdXN0ZXIgVGhpcyBpcyB1c2VkIGJ5IE9MTSBVSSB0byBwcm92aWRlIHN0YXR1cyBpbmZvcm1hdGlvbiB0byB0aGUgdXNlciIsInR5cGUiOiJzdHJpbmcifX0sInR5cGUiOiJvYmplY3QifX0sInR5cGUiOiJvYmplY3QifX0sInNlcnZlZCI6dHJ1ZSwic3RvcmFnZSI6dHJ1ZSwic3VicmVzb3VyY2VzIjp7InN0YXR1cyI6e319fV19LCJzdGF0dXMiOnsiYWNjZXB0ZWROYW1lcyI6eyJraW5kIjoiIiwicGx1cmFsIjoiIn0sImNvbmRpdGlvbnMiOltdLCJzdG9yZWRWZXJzaW9ucyI6W119fQ== relatedImages: -- image: quay.io/ibmodffs/ibm-storage-odf-operator-bundle:1.4.1 +- image: quay.io/ibmodffs/ibm-storage-odf-operator-bundle:1.5.0 name: "" -- image: quay.io/ibmodffs/ibm-storage-odf-operator:1.4.1 +- image: quay.io/ibmodffs/ibm-storage-odf-operator:1.5.0 name: "" -- image: quay.io/ibmodffs/ibm-storage-odf-plugin:1.4.1 +- image: quay.io/ibmodffs/ibm-storage-odf-plugin:1.5.0 name: "" - image: registry.redhat.io/openshift4/ose-kube-rbac-proxy:v4.11 name: "" diff --git a/catalog/index.yaml b/catalog/index.yaml index 0aae06cd5..e8c39b5e5 100644 --- a/catalog/index.yaml +++ b/catalog/index.yaml @@ -54,15 +54,15 @@ entries: - name: csi-addons.v0.8.0 --- -defaultChannel: stable-v1.4 +defaultChannel: stable-v1.5 name: ibm-storage-odf-operator schema: olm.package --- schema: olm.channel package: ibm-storage-odf-operator -name: stable-v1.4 +name: stable-v1.5 entries: - - name: ibm-storage-odf-operator.v1.4.1 + - name: ibm-storage-odf-operator.v1.5.0 --- defaultChannel: alpha diff --git a/config/manager/manager.env b/config/manager/manager.env index 152f8d942..ade0b96fb 100644 --- a/config/manager/manager.env +++ b/config/manager/manager.env @@ -24,8 +24,8 @@ OCS_CLIENT_SUBSCRIPTION_CATALOGSOURCE=odf-catalogsource OCS_CLIENT_SUBSCRIPTION_CATALOGSOURCE_NAMESPACE=openshift-marketplace IBM_SUBSCRIPTION_NAME=ibm-storage-odf-operator IBM_SUBSCRIPTION_PACKAGE=ibm-storage-odf-operator -IBM_SUBSCRIPTION_CHANNEL=stable-v1.4 -IBM_SUBSCRIPTION_STARTINGCSV=ibm-storage-odf-operator.v1.4.1 +IBM_SUBSCRIPTION_CHANNEL=stable-v1.5 +IBM_SUBSCRIPTION_STARTINGCSV=ibm-storage-odf-operator.v1.5.0 IBM_SUBSCRIPTION_CATALOGSOURCE=odf-catalogsource IBM_SUBSCRIPTION_CATALOGSOURCE_NAMESPACE=openshift-marketplace ROOK_SUBSCRIPTION_NAME=rook-ceph-operator diff --git a/hack/make-bundle-vars.mk b/hack/make-bundle-vars.mk index b9a2f3173..692c23f8a 100644 --- a/hack/make-bundle-vars.mk +++ b/hack/make-bundle-vars.mk @@ -101,8 +101,8 @@ CSIADDONS_BUNDLE_IMG ?= $(CSIADDONS_BUNDLE_IMG_LOCATION)/$(CSIADDONS_BUNDLE_IMG_ IBM_BUNDLE_NAME ?= ibm-storage-odf-operator IBM_BUNDLE_IMG_NAME ?= $(IBM_BUNDLE_NAME)-bundle -IBM_BUNDLE_VERSION ?= 1.4.1 -IBM_BUNDLE_IMG_TAG ?= 1.4.1 +IBM_BUNDLE_VERSION ?= 1.5.0 +IBM_BUNDLE_IMG_TAG ?= 1.5.0 IBM_BUNDLE_IMG_LOCATION ?= quay.io/ibmodffs IBM_BUNDLE_IMG ?= $(IBM_BUNDLE_IMG_LOCATION)/$(IBM_BUNDLE_IMG_NAME):$(IBM_BUNDLE_IMG_TAG) @@ -178,7 +178,7 @@ OCS_CLIENT_SUBSCRIPTION_CATALOGSOURCE_NAMESPACE ?= $(OPERATOR_CATALOGSOURCE_NAME IBM_SUBSCRIPTION_NAME ?= $(IBM_BUNDLE_NAME) IBM_SUBSCRIPTION_PACKAGE ?= $(IBM_BUNDLE_NAME) -IBM_SUBSCRIPTION_CHANNEL ?= stable-v1.4 +IBM_SUBSCRIPTION_CHANNEL ?= stable-v1.5 IBM_SUBSCRIPTION_STARTINGCSV ?= $(IBM_BUNDLE_NAME).v$(IBM_BUNDLE_VERSION) IBM_SUBSCRIPTION_CATALOGSOURCE ?= $(OPERATOR_CATALOGSOURCE) IBM_SUBSCRIPTION_CATALOGSOURCE_NAMESPACE ?= $(OPERATOR_CATALOGSOURCE_NAMESPACE) From b0ba2dfb56950dacf6ea01a8dbb609f50f64e804 Mon Sep 17 00:00:00 2001 From: Nitin Goyal Date: Wed, 17 Jul 2024 19:16:40 +0530 Subject: [PATCH 2/2] godeps: update IBM apis Signed-off-by: Nitin Goyal --- go.mod | 16 +- go.sum | 31 +- .../api/v1alpha1/groupversion_info.go | 4 +- vendor/golang.org/x/net/html/doc.go | 2 +- .../golang.org/x/net/http/httpguts/httplex.go | 13 +- vendor/golang.org/x/net/http2/frame.go | 40 +- vendor/golang.org/x/net/http2/http2.go | 19 +- vendor/golang.org/x/net/http2/pipe.go | 11 +- vendor/golang.org/x/net/http2/server.go | 116 +- vendor/golang.org/x/net/http2/timer.go | 20 + vendor/golang.org/x/net/http2/transport.go | 221 +- .../x/net/http2/writesched_priority.go | 4 +- vendor/golang.org/x/sys/unix/asm_zos_s390x.s | 665 +- vendor/golang.org/x/sys/unix/bpxsvc_zos.go | 657 ++ vendor/golang.org/x/sys/unix/bpxsvc_zos.s | 192 + vendor/golang.org/x/sys/unix/epoll_zos.go | 220 - vendor/golang.org/x/sys/unix/fstatfs_zos.go | 163 - vendor/golang.org/x/sys/unix/mkerrors.sh | 2 + vendor/golang.org/x/sys/unix/mmap_nomremap.go | 2 +- vendor/golang.org/x/sys/unix/pagesize_unix.go | 2 +- .../x/sys/unix/readdirent_getdirentries.go | 2 +- vendor/golang.org/x/sys/unix/sockcmsg_zos.go | 58 + .../golang.org/x/sys/unix/symaddr_zos_s390x.s | 75 + .../x/sys/unix/syscall_zos_s390x.go | 1509 ++++- vendor/golang.org/x/sys/unix/sysvshm_unix.go | 2 +- .../x/sys/unix/sysvshm_unix_other.go | 2 +- vendor/golang.org/x/sys/unix/zerrors_linux.go | 29 +- .../x/sys/unix/zerrors_linux_386.go | 1 + .../x/sys/unix/zerrors_linux_amd64.go | 1 + .../x/sys/unix/zerrors_linux_arm64.go | 1 + .../x/sys/unix/zerrors_zos_s390x.go | 233 +- .../x/sys/unix/zsymaddr_zos_s390x.s | 364 ++ .../x/sys/unix/zsyscall_zos_s390x.go | 3113 ++++++++-- .../x/sys/unix/zsysnum_linux_386.go | 5 + .../x/sys/unix/zsysnum_linux_amd64.go | 5 + .../x/sys/unix/zsysnum_linux_arm.go | 5 + .../x/sys/unix/zsysnum_linux_arm64.go | 5 + .../x/sys/unix/zsysnum_linux_loong64.go | 5 + .../x/sys/unix/zsysnum_linux_mips.go | 5 + .../x/sys/unix/zsysnum_linux_mips64.go | 5 + .../x/sys/unix/zsysnum_linux_mips64le.go | 5 + .../x/sys/unix/zsysnum_linux_mipsle.go | 5 + .../x/sys/unix/zsysnum_linux_ppc.go | 5 + .../x/sys/unix/zsysnum_linux_ppc64.go | 5 + .../x/sys/unix/zsysnum_linux_ppc64le.go | 5 + .../x/sys/unix/zsysnum_linux_riscv64.go | 5 + .../x/sys/unix/zsysnum_linux_s390x.go | 5 + .../x/sys/unix/zsysnum_linux_sparc64.go | 5 + .../x/sys/unix/zsysnum_zos_s390x.go | 5507 +++++++++-------- vendor/golang.org/x/sys/unix/ztypes_linux.go | 59 +- .../golang.org/x/sys/unix/ztypes_linux_386.go | 8 - .../x/sys/unix/ztypes_linux_amd64.go | 9 - .../golang.org/x/sys/unix/ztypes_linux_arm.go | 9 - .../x/sys/unix/ztypes_linux_arm64.go | 9 - .../x/sys/unix/ztypes_linux_loong64.go | 9 - .../x/sys/unix/ztypes_linux_mips.go | 9 - .../x/sys/unix/ztypes_linux_mips64.go | 9 - .../x/sys/unix/ztypes_linux_mips64le.go | 9 - .../x/sys/unix/ztypes_linux_mipsle.go | 9 - .../golang.org/x/sys/unix/ztypes_linux_ppc.go | 9 - .../x/sys/unix/ztypes_linux_ppc64.go | 9 - .../x/sys/unix/ztypes_linux_ppc64le.go | 9 - .../x/sys/unix/ztypes_linux_riscv64.go | 9 - .../x/sys/unix/ztypes_linux_s390x.go | 9 - .../x/sys/unix/ztypes_linux_sparc64.go | 9 - .../golang.org/x/sys/unix/ztypes_zos_s390x.go | 146 +- vendor/golang.org/x/sys/windows/aliases.go | 2 +- vendor/golang.org/x/sys/windows/empty.s | 8 - .../x/sys/windows/security_windows.go | 1 + .../x/sys/windows/syscall_windows.go | 82 + .../golang.org/x/sys/windows/types_windows.go | 24 + .../x/sys/windows/zsyscall_windows.go | 135 +- .../protobuf/encoding/prototext/decode.go | 4 +- .../protobuf/encoding/prototext/encode.go | 20 +- .../protobuf/internal/descfmt/stringer.go | 1 + .../editiondefaults/editions_defaults.binpb | Bin 63 -> 93 bytes .../internal/editionssupport/editions.go | 13 + .../protobuf/internal/encoding/tag/tag.go | 4 +- .../protobuf/internal/encoding/text/decode.go | 2 +- .../protobuf/internal/errors/errors.go | 21 +- .../protobuf/internal/filedesc/desc.go | 88 +- .../protobuf/internal/filedesc/desc_init.go | 43 +- .../protobuf/internal/filedesc/desc_lazy.go | 49 +- .../internal/filedesc/desc_list_gen.go | 11 + .../protobuf/internal/filedesc/editions.go | 22 +- .../protobuf/internal/filedesc/placeholder.go | 1 + .../protobuf/internal/filetype/build.go | 4 +- .../protobuf/internal/genid/descriptor_gen.go | 49 +- .../internal/genid/go_features_gen.go | 2 +- .../protobuf/internal/impl/api_export.go | 6 +- .../protobuf/internal/impl/checkinit.go | 2 +- .../protobuf/internal/impl/codec_extension.go | 22 + .../protobuf/internal/impl/codec_field.go | 64 +- .../protobuf/internal/impl/codec_map.go | 15 +- .../internal/impl/codec_messageset.go | 22 + .../protobuf/internal/impl/convert.go | 2 +- .../protobuf/internal/impl/convert_list.go | 2 +- .../protobuf/internal/impl/convert_map.go | 2 +- .../protobuf/internal/impl/encode.go | 48 +- .../protobuf/internal/impl/extension.go | 8 +- .../protobuf/internal/impl/legacy_enum.go | 3 +- .../internal/impl/legacy_extension.go | 2 +- .../protobuf/internal/impl/legacy_file.go | 4 +- .../protobuf/internal/impl/legacy_message.go | 14 +- .../protobuf/internal/impl/message.go | 8 +- .../protobuf/internal/impl/message_reflect.go | 45 +- .../internal/impl/message_reflect_gen.go | 146 +- .../protobuf/internal/impl/pointer_reflect.go | 6 +- .../protobuf/internal/impl/pointer_unsafe.go | 4 +- .../protobuf/internal/order/range.go | 4 +- .../protobuf/internal/version/version.go | 4 +- .../protobuf/proto/decode.go | 2 + .../protobuf/proto/encode.go | 44 +- .../protobuf/proto/extension.go | 17 +- .../protobuf/proto/messageset.go | 7 +- .../google.golang.org/protobuf/proto/size.go | 2 + .../protobuf/reflect/protodesc/desc.go | 13 +- .../protobuf/reflect/protodesc/desc_init.go | 49 +- .../reflect/protodesc/desc_resolve.go | 5 + .../reflect/protodesc/desc_validate.go | 73 +- .../protobuf/reflect/protodesc/editions.go | 11 +- .../protobuf/reflect/protodesc/proto.go | 22 + .../protobuf/reflect/protoreflect/proto.go | 2 +- .../reflect/protoreflect/source_gen.go | 21 + .../protobuf/reflect/protoreflect/type.go | 12 +- .../reflect/protoreflect/value_pure.go | 14 +- .../reflect/protoreflect/value_union.go | 14 +- .../protoreflect/value_unsafe_go120.go | 6 +- .../protoreflect/value_unsafe_go121.go | 8 +- .../reflect/protoregistry/registry.go | 14 +- .../types/descriptorpb/descriptor.pb.go | 1141 ++-- .../types/gofeaturespb/go_features.pb.go | 122 +- .../types/gofeaturespb/go_features.proto | 28 - .../protobuf/types/known/anypb/any.pb.go | 4 +- .../types/known/durationpb/duration.pb.go | 4 +- .../types/known/timestamppb/timestamp.pb.go | 4 +- vendor/modules.txt | 23 +- 137 files changed, 11020 insertions(+), 5372 deletions(-) create mode 100644 vendor/golang.org/x/net/http2/timer.go create mode 100644 vendor/golang.org/x/sys/unix/bpxsvc_zos.go create mode 100644 vendor/golang.org/x/sys/unix/bpxsvc_zos.s delete mode 100644 vendor/golang.org/x/sys/unix/epoll_zos.go delete mode 100644 vendor/golang.org/x/sys/unix/fstatfs_zos.go create mode 100644 vendor/golang.org/x/sys/unix/sockcmsg_zos.go create mode 100644 vendor/golang.org/x/sys/unix/symaddr_zos_s390x.s create mode 100644 vendor/golang.org/x/sys/unix/zsymaddr_zos_s390x.s delete mode 100644 vendor/golang.org/x/sys/windows/empty.s create mode 100644 vendor/google.golang.org/protobuf/internal/editionssupport/editions.go delete mode 100644 vendor/google.golang.org/protobuf/types/gofeaturespb/go_features.proto diff --git a/go.mod b/go.mod index 771b283ca..1af82a818 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module github.com/red-hat-storage/odf-operator go 1.21 require ( - github.com/IBM/ibm-storage-odf-operator v1.4.1 + github.com/IBM/ibm-storage-odf-operator v1.5.0 github.com/ghodss/yaml v1.0.1-0.20220118164431-d8423dcdf344 github.com/go-logr/logr v1.4.1 github.com/onsi/ginkgo/v2 v2.14.0 @@ -83,18 +83,18 @@ require ( github.com/sirupsen/logrus v1.9.3 // indirect github.com/spf13/pflag v1.0.5 // indirect go.uber.org/zap v1.26.0 // indirect - golang.org/x/crypto v0.21.0 // indirect + golang.org/x/crypto v0.24.0 // indirect golang.org/x/exp v0.0.0-20231127185646-65229373498e // indirect - golang.org/x/net v0.22.0 // indirect + golang.org/x/net v0.26.0 // indirect golang.org/x/oauth2 v0.18.0 // indirect - golang.org/x/sys v0.18.0 // indirect - golang.org/x/term v0.18.0 // indirect - golang.org/x/text v0.14.0 // indirect + golang.org/x/sys v0.21.0 // indirect + golang.org/x/term v0.21.0 // indirect + golang.org/x/text v0.16.0 // indirect golang.org/x/time v0.5.0 // indirect - golang.org/x/tools v0.18.0 // indirect + golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d // indirect gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect google.golang.org/appengine v1.6.8 // indirect - google.golang.org/protobuf v1.33.0 // indirect + google.golang.org/protobuf v1.34.2 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/go.sum b/go.sum index a64ebb9d2..88372e929 100644 --- a/go.sum +++ b/go.sum @@ -85,8 +85,8 @@ github.com/Azure/go-autorest/tracing v0.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbt github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/IBM/ibm-storage-odf-operator v1.4.1 h1:OoWfV1FQ3byJz5mU9dNi3BZ1BnwNXF3hQMZObvwXiWs= -github.com/IBM/ibm-storage-odf-operator v1.4.1/go.mod h1:TmOsuYoZIu70IMMZzdxfj1OH5EPPon3u1qzuQO9Xaxo= +github.com/IBM/ibm-storage-odf-operator v1.5.0 h1:09bRqiHJpxUoHWfbY0V29bSeQNwDf/eLiZ9rU7sI9Pc= +github.com/IBM/ibm-storage-odf-operator v1.5.0/go.mod h1:lpZYtAcWTv9sPXEm4/E3vgYnDawbj2tDajkDwueO4QM= github.com/IBM/keyprotect-go-client v0.5.1/go.mod h1:5TwDM/4FRJq1ZOlwQL1xFahLWQ3TveR88VmL1u3njyI= github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= @@ -842,8 +842,8 @@ golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58 golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= -golang.org/x/crypto v0.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA= -golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= +golang.org/x/crypto v0.24.0 h1:mnl8DM0o513X8fdIkmyFE/5hTYxbwYOjDS/+rK6qpRI= +golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -955,8 +955,8 @@ golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= -golang.org/x/net v0.22.0 h1:9sGLhx7iRIHEiX0oAJ3MRZMUCElJgy7Br1nO+AMN3Tc= -golang.org/x/net v0.22.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= +golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ= +golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1092,8 +1092,8 @@ golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= -golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws= +golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -1106,8 +1106,8 @@ golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= -golang.org/x/term v0.18.0 h1:FcHjZXDMxI8mM3nwhX9HlKop4C0YQvCVCdwYl2wOtE8= -golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= +golang.org/x/term v0.21.0 h1:WVXCp+/EBEHOj53Rvu+7KiT/iElMrO8ACK16SMZ3jaA= +golang.org/x/term v0.21.0/go.mod h1:ooXLefLobQVslOqselCNF4SxFAaoS6KujMbsGzSDmX0= golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1124,8 +1124,9 @@ golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= -golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= +golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -1209,8 +1210,8 @@ golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.2.0/go.mod h1:y4OqIKeOV/fWJetJ8bXPU1sEVniLMIyDAZWeHdV+NTA= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/tools v0.18.0 h1:k8NLag8AGHnn+PHbl7g43CtqZAwG60vZkLqgyZgIHgQ= -golang.org/x/tools v0.18.0/go.mod h1:GL7B4CwcLLeo59yx/9UWWuNOW1n3VZ4f5axWfML7Lcg= +golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d h1:vU5i/LfpvrRCpgM/VPfJLg5KjxD3E+hfT1SH+d9zLwg= +golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -1391,8 +1392,8 @@ google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= -google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= +google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/vendor/github.com/IBM/ibm-storage-odf-operator/api/v1alpha1/groupversion_info.go b/vendor/github.com/IBM/ibm-storage-odf-operator/api/v1alpha1/groupversion_info.go index af242ef82..28ef95aeb 100644 --- a/vendor/github.com/IBM/ibm-storage-odf-operator/api/v1alpha1/groupversion_info.go +++ b/vendor/github.com/IBM/ibm-storage-odf-operator/api/v1alpha1/groupversion_info.go @@ -15,8 +15,8 @@ */ // Package v1alpha1 contains API Schema definitions for the odf v1alpha1 API group -//+kubebuilder:object:generate=true -//+groupName=odf.ibm.com +// +kubebuilder:object:generate=true +// +groupName=odf.ibm.com package v1alpha1 import ( diff --git a/vendor/golang.org/x/net/html/doc.go b/vendor/golang.org/x/net/html/doc.go index 2466ae3d9..3a7e5ab17 100644 --- a/vendor/golang.org/x/net/html/doc.go +++ b/vendor/golang.org/x/net/html/doc.go @@ -104,7 +104,7 @@ tokenization, and tokenization and tree construction stages of the WHATWG HTML parsing specification respectively. While the tokenizer parses and normalizes individual HTML tokens, only the parser constructs the DOM tree from the tokenized HTML, as described in the tree construction stage of the -specification, dynamically modifying or extending the docuemnt's DOM tree. +specification, dynamically modifying or extending the document's DOM tree. If your use case requires semantically well-formed HTML documents, as defined by the WHATWG specification, the parser should be used rather than the tokenizer. diff --git a/vendor/golang.org/x/net/http/httpguts/httplex.go b/vendor/golang.org/x/net/http/httpguts/httplex.go index 6e071e852..9b4de9401 100644 --- a/vendor/golang.org/x/net/http/httpguts/httplex.go +++ b/vendor/golang.org/x/net/http/httpguts/httplex.go @@ -12,7 +12,7 @@ import ( "golang.org/x/net/idna" ) -var isTokenTable = [127]bool{ +var isTokenTable = [256]bool{ '!': true, '#': true, '$': true, @@ -93,12 +93,7 @@ var isTokenTable = [127]bool{ } func IsTokenRune(r rune) bool { - i := int(r) - return i < len(isTokenTable) && isTokenTable[i] -} - -func isNotToken(r rune) bool { - return !IsTokenRune(r) + return r < utf8.RuneSelf && isTokenTable[byte(r)] } // HeaderValuesContainsToken reports whether any string in values @@ -202,8 +197,8 @@ func ValidHeaderFieldName(v string) bool { if len(v) == 0 { return false } - for _, r := range v { - if !IsTokenRune(r) { + for i := 0; i < len(v); i++ { + if !isTokenTable[v[i]] { return false } } diff --git a/vendor/golang.org/x/net/http2/frame.go b/vendor/golang.org/x/net/http2/frame.go index e2b298d85..105c3b279 100644 --- a/vendor/golang.org/x/net/http2/frame.go +++ b/vendor/golang.org/x/net/http2/frame.go @@ -490,6 +490,9 @@ func terminalReadFrameError(err error) bool { // returned error is ErrFrameTooLarge. Other errors may be of type // ConnectionError, StreamError, or anything else from the underlying // reader. +// +// If ReadFrame returns an error and a non-nil Frame, the Frame's StreamID +// indicates the stream responsible for the error. func (fr *Framer) ReadFrame() (Frame, error) { fr.errDetail = nil if fr.lastFrame != nil { @@ -1521,7 +1524,7 @@ func (fr *Framer) maxHeaderStringLen() int { // readMetaFrame returns 0 or more CONTINUATION frames from fr and // merge them into the provided hf and returns a MetaHeadersFrame // with the decoded hpack values. -func (fr *Framer) readMetaFrame(hf *HeadersFrame) (*MetaHeadersFrame, error) { +func (fr *Framer) readMetaFrame(hf *HeadersFrame) (Frame, error) { if fr.AllowIllegalReads { return nil, errors.New("illegal use of AllowIllegalReads with ReadMetaHeaders") } @@ -1564,6 +1567,7 @@ func (fr *Framer) readMetaFrame(hf *HeadersFrame) (*MetaHeadersFrame, error) { if size > remainSize { hdec.SetEmitEnabled(false) mh.Truncated = true + remainSize = 0 return } remainSize -= size @@ -1576,8 +1580,38 @@ func (fr *Framer) readMetaFrame(hf *HeadersFrame) (*MetaHeadersFrame, error) { var hc headersOrContinuation = hf for { frag := hc.HeaderBlockFragment() + + // Avoid parsing large amounts of headers that we will then discard. + // If the sender exceeds the max header list size by too much, + // skip parsing the fragment and close the connection. + // + // "Too much" is either any CONTINUATION frame after we've already + // exceeded the max header list size (in which case remainSize is 0), + // or a frame whose encoded size is more than twice the remaining + // header list bytes we're willing to accept. + if int64(len(frag)) > int64(2*remainSize) { + if VerboseLogs { + log.Printf("http2: header list too large") + } + // It would be nice to send a RST_STREAM before sending the GOAWAY, + // but the structure of the server's frame writer makes this difficult. + return mh, ConnectionError(ErrCodeProtocol) + } + + // Also close the connection after any CONTINUATION frame following an + // invalid header, since we stop tracking the size of the headers after + // an invalid one. + if invalid != nil { + if VerboseLogs { + log.Printf("http2: invalid header: %v", invalid) + } + // It would be nice to send a RST_STREAM before sending the GOAWAY, + // but the structure of the server's frame writer makes this difficult. + return mh, ConnectionError(ErrCodeProtocol) + } + if _, err := hdec.Write(frag); err != nil { - return nil, ConnectionError(ErrCodeCompression) + return mh, ConnectionError(ErrCodeCompression) } if hc.HeadersEnded() { @@ -1594,7 +1628,7 @@ func (fr *Framer) readMetaFrame(hf *HeadersFrame) (*MetaHeadersFrame, error) { mh.HeadersFrame.invalidate() if err := hdec.Close(); err != nil { - return nil, ConnectionError(ErrCodeCompression) + return mh, ConnectionError(ErrCodeCompression) } if invalid != nil { fr.errDetail = invalid diff --git a/vendor/golang.org/x/net/http2/http2.go b/vendor/golang.org/x/net/http2/http2.go index 6f2df2818..003e649f3 100644 --- a/vendor/golang.org/x/net/http2/http2.go +++ b/vendor/golang.org/x/net/http2/http2.go @@ -17,6 +17,7 @@ package http2 // import "golang.org/x/net/http2" import ( "bufio" + "context" "crypto/tls" "fmt" "io" @@ -26,6 +27,7 @@ import ( "strconv" "strings" "sync" + "time" "golang.org/x/net/http/httpguts" ) @@ -210,12 +212,6 @@ type stringWriter interface { WriteString(s string) (n int, err error) } -// A gate lets two goroutines coordinate their activities. -type gate chan struct{} - -func (g gate) Done() { g <- struct{}{} } -func (g gate) Wait() { <-g } - // A closeWaiter is like a sync.WaitGroup but only goes 1 to 0 (open to closed). type closeWaiter chan struct{} @@ -383,3 +379,14 @@ func validPseudoPath(v string) bool { // makes that struct also non-comparable, and generally doesn't add // any size (as long as it's first). type incomparable [0]func() + +// synctestGroupInterface is the methods of synctestGroup used by Server and Transport. +// It's defined as an interface here to let us keep synctestGroup entirely test-only +// and not a part of non-test builds. +type synctestGroupInterface interface { + Join() + Now() time.Time + NewTimer(d time.Duration) timer + AfterFunc(d time.Duration, f func()) timer + ContextWithTimeout(ctx context.Context, d time.Duration) (context.Context, context.CancelFunc) +} diff --git a/vendor/golang.org/x/net/http2/pipe.go b/vendor/golang.org/x/net/http2/pipe.go index 684d984fd..3b9f06b96 100644 --- a/vendor/golang.org/x/net/http2/pipe.go +++ b/vendor/golang.org/x/net/http2/pipe.go @@ -77,7 +77,10 @@ func (p *pipe) Read(d []byte) (n int, err error) { } } -var errClosedPipeWrite = errors.New("write on closed buffer") +var ( + errClosedPipeWrite = errors.New("write on closed buffer") + errUninitializedPipeWrite = errors.New("write on uninitialized buffer") +) // Write copies bytes from p into the buffer and wakes a reader. // It is an error to write more data than the buffer can hold. @@ -91,6 +94,12 @@ func (p *pipe) Write(d []byte) (n int, err error) { if p.err != nil || p.breakErr != nil { return 0, errClosedPipeWrite } + // pipe.setBuffer is never invoked, leaving the buffer uninitialized. + // We shouldn't try to write to an uninitialized pipe, + // but returning an error is better than panicking. + if p.b == nil { + return 0, errUninitializedPipeWrite + } return p.b.Write(d) } diff --git a/vendor/golang.org/x/net/http2/server.go b/vendor/golang.org/x/net/http2/server.go index ae94c6408..6c349f3ec 100644 --- a/vendor/golang.org/x/net/http2/server.go +++ b/vendor/golang.org/x/net/http2/server.go @@ -124,6 +124,7 @@ type Server struct { // IdleTimeout specifies how long until idle clients should be // closed with a GOAWAY frame. PING frames are not considered // activity for the purposes of IdleTimeout. + // If zero or negative, there is no timeout. IdleTimeout time.Duration // MaxUploadBufferPerConnection is the size of the initial flow @@ -153,6 +154,39 @@ type Server struct { // so that we don't embed a Mutex in this struct, which will make the // struct non-copyable, which might break some callers. state *serverInternalState + + // Synchronization group used for testing. + // Outside of tests, this is nil. + group synctestGroupInterface +} + +func (s *Server) markNewGoroutine() { + if s.group != nil { + s.group.Join() + } +} + +func (s *Server) now() time.Time { + if s.group != nil { + return s.group.Now() + } + return time.Now() +} + +// newTimer creates a new time.Timer, or a synthetic timer in tests. +func (s *Server) newTimer(d time.Duration) timer { + if s.group != nil { + return s.group.NewTimer(d) + } + return timeTimer{time.NewTimer(d)} +} + +// afterFunc creates a new time.AfterFunc timer, or a synthetic timer in tests. +func (s *Server) afterFunc(d time.Duration, f func()) timer { + if s.group != nil { + return s.group.AfterFunc(d, f) + } + return timeTimer{time.AfterFunc(d, f)} } func (s *Server) initialConnRecvWindowSize() int32 { @@ -399,6 +433,10 @@ func (o *ServeConnOpts) handler() http.Handler { // // The opts parameter is optional. If nil, default values are used. func (s *Server) ServeConn(c net.Conn, opts *ServeConnOpts) { + s.serveConn(c, opts, nil) +} + +func (s *Server) serveConn(c net.Conn, opts *ServeConnOpts, newf func(*serverConn)) { baseCtx, cancel := serverConnBaseContext(c, opts) defer cancel() @@ -425,6 +463,9 @@ func (s *Server) ServeConn(c net.Conn, opts *ServeConnOpts) { pushEnabled: true, sawClientPreface: opts.SawClientPreface, } + if newf != nil { + newf(sc) + } s.state.registerConn(sc) defer s.state.unregisterConn(sc) @@ -434,7 +475,7 @@ func (s *Server) ServeConn(c net.Conn, opts *ServeConnOpts) { // passes the connection off to us with the deadline already set. // Write deadlines are set per stream in serverConn.newStream. // Disarm the net.Conn write deadline here. - if sc.hs.WriteTimeout != 0 { + if sc.hs.WriteTimeout > 0 { sc.conn.SetWriteDeadline(time.Time{}) } @@ -598,8 +639,8 @@ type serverConn struct { inFrameScheduleLoop bool // whether we're in the scheduleFrameWrite loop needToSendGoAway bool // we need to schedule a GOAWAY frame write goAwayCode ErrCode - shutdownTimer *time.Timer // nil until used - idleTimer *time.Timer // nil if unused + shutdownTimer timer // nil until used + idleTimer timer // nil if unused // Owned by the writeFrameAsync goroutine: headerWriteBuf bytes.Buffer @@ -648,12 +689,12 @@ type stream struct { flow outflow // limits writing from Handler to client inflow inflow // what the client is allowed to POST/etc to us state streamState - resetQueued bool // RST_STREAM queued for write; set by sc.resetStream - gotTrailerHeader bool // HEADER frame for trailers was seen - wroteHeaders bool // whether we wrote headers (not status 100) - readDeadline *time.Timer // nil if unused - writeDeadline *time.Timer // nil if unused - closeErr error // set before cw is closed + resetQueued bool // RST_STREAM queued for write; set by sc.resetStream + gotTrailerHeader bool // HEADER frame for trailers was seen + wroteHeaders bool // whether we wrote headers (not status 100) + readDeadline timer // nil if unused + writeDeadline timer // nil if unused + closeErr error // set before cw is closed trailer http.Header // accumulated trailers reqTrailer http.Header // handler's Request.Trailer @@ -731,11 +772,7 @@ func isClosedConnError(err error) bool { return false } - // TODO: remove this string search and be more like the Windows - // case below. That might involve modifying the standard library - // to return better error types. - str := err.Error() - if strings.Contains(str, "use of closed network connection") { + if errors.Is(err, net.ErrClosed) { return true } @@ -814,8 +851,9 @@ type readFrameResult struct { // consumer is done with the frame. // It's run on its own goroutine. func (sc *serverConn) readFrames() { - gate := make(gate) - gateDone := gate.Done + sc.srv.markNewGoroutine() + gate := make(chan struct{}) + gateDone := func() { gate <- struct{}{} } for { f, err := sc.framer.ReadFrame() select { @@ -846,6 +884,7 @@ type frameWriteResult struct { // At most one goroutine can be running writeFrameAsync at a time per // serverConn. func (sc *serverConn) writeFrameAsync(wr FrameWriteRequest, wd *writeData) { + sc.srv.markNewGoroutine() var err error if wd == nil { err = wr.write.writeFrame(sc) @@ -924,14 +963,14 @@ func (sc *serverConn) serve() { sc.setConnState(http.StateActive) sc.setConnState(http.StateIdle) - if sc.srv.IdleTimeout != 0 { - sc.idleTimer = time.AfterFunc(sc.srv.IdleTimeout, sc.onIdleTimer) + if sc.srv.IdleTimeout > 0 { + sc.idleTimer = sc.srv.afterFunc(sc.srv.IdleTimeout, sc.onIdleTimer) defer sc.idleTimer.Stop() } go sc.readFrames() // closed by defer sc.conn.Close above - settingsTimer := time.AfterFunc(firstSettingsTimeout, sc.onSettingsTimer) + settingsTimer := sc.srv.afterFunc(firstSettingsTimeout, sc.onSettingsTimer) defer settingsTimer.Stop() loopNum := 0 @@ -1060,10 +1099,10 @@ func (sc *serverConn) readPreface() error { errc <- nil } }() - timer := time.NewTimer(prefaceTimeout) // TODO: configurable on *Server? + timer := sc.srv.newTimer(prefaceTimeout) // TODO: configurable on *Server? defer timer.Stop() select { - case <-timer.C: + case <-timer.C(): return errPrefaceTimeout case err := <-errc: if err == nil { @@ -1428,7 +1467,7 @@ func (sc *serverConn) goAway(code ErrCode) { func (sc *serverConn) shutDownIn(d time.Duration) { sc.serveG.check() - sc.shutdownTimer = time.AfterFunc(d, sc.onShutdownTimer) + sc.shutdownTimer = sc.srv.afterFunc(d, sc.onShutdownTimer) } func (sc *serverConn) resetStream(se StreamError) { @@ -1481,6 +1520,11 @@ func (sc *serverConn) processFrameFromReader(res readFrameResult) bool { sc.goAway(ErrCodeFlowControl) return true case ConnectionError: + if res.f != nil { + if id := res.f.Header().StreamID; id > sc.maxClientStreamID { + sc.maxClientStreamID = id + } + } sc.logf("http2: server connection error from %v: %v", sc.conn.RemoteAddr(), ev) sc.goAway(ErrCode(ev)) return true // goAway will handle shutdown @@ -1637,7 +1681,7 @@ func (sc *serverConn) closeStream(st *stream, err error) { delete(sc.streams, st.id) if len(sc.streams) == 0 { sc.setConnState(http.StateIdle) - if sc.srv.IdleTimeout != 0 { + if sc.srv.IdleTimeout > 0 && sc.idleTimer != nil { sc.idleTimer.Reset(sc.srv.IdleTimeout) } if h1ServerKeepAlivesDisabled(sc.hs) { @@ -1659,6 +1703,7 @@ func (sc *serverConn) closeStream(st *stream, err error) { } } st.closeErr = err + st.cancelCtx() st.cw.Close() // signals Handler's CloseNotifier, unblocks writes, etc sc.writeSched.CloseStream(st.id) } @@ -2017,9 +2062,9 @@ func (sc *serverConn) processHeaders(f *MetaHeadersFrame) error { // similar to how the http1 server works. Here it's // technically more like the http1 Server's ReadHeaderTimeout // (in Go 1.8), though. That's a more sane option anyway. - if sc.hs.ReadTimeout != 0 { + if sc.hs.ReadTimeout > 0 { sc.conn.SetReadDeadline(time.Time{}) - st.readDeadline = time.AfterFunc(sc.hs.ReadTimeout, st.onReadTimeout) + st.readDeadline = sc.srv.afterFunc(sc.hs.ReadTimeout, st.onReadTimeout) } return sc.scheduleHandler(id, rw, req, handler) @@ -2038,7 +2083,7 @@ func (sc *serverConn) upgradeRequest(req *http.Request) { // Disable any read deadline set by the net/http package // prior to the upgrade. - if sc.hs.ReadTimeout != 0 { + if sc.hs.ReadTimeout > 0 { sc.conn.SetReadDeadline(time.Time{}) } @@ -2116,8 +2161,8 @@ func (sc *serverConn) newStream(id, pusherID uint32, state streamState) *stream st.flow.conn = &sc.flow // link to conn-level counter st.flow.add(sc.initialStreamSendWindowSize) st.inflow.init(sc.srv.initialStreamRecvWindowSize()) - if sc.hs.WriteTimeout != 0 { - st.writeDeadline = time.AfterFunc(sc.hs.WriteTimeout, st.onWriteTimeout) + if sc.hs.WriteTimeout > 0 { + st.writeDeadline = sc.srv.afterFunc(sc.hs.WriteTimeout, st.onWriteTimeout) } sc.streams[id] = st @@ -2341,6 +2386,7 @@ func (sc *serverConn) handlerDone() { // Run on its own goroutine. func (sc *serverConn) runHandler(rw *responseWriter, req *http.Request, handler func(http.ResponseWriter, *http.Request)) { + sc.srv.markNewGoroutine() defer sc.sendServeMsg(handlerDoneMsg) didPanic := true defer func() { @@ -2637,7 +2683,7 @@ func (rws *responseWriterState) writeChunk(p []byte) (n int, err error) { var date string if _, ok := rws.snapHeader["Date"]; !ok { // TODO(bradfitz): be faster here, like net/http? measure. - date = time.Now().UTC().Format(http.TimeFormat) + date = rws.conn.srv.now().UTC().Format(http.TimeFormat) } for _, v := range rws.snapHeader["Trailer"] { @@ -2759,7 +2805,7 @@ func (rws *responseWriterState) promoteUndeclaredTrailers() { func (w *responseWriter) SetReadDeadline(deadline time.Time) error { st := w.rws.stream - if !deadline.IsZero() && deadline.Before(time.Now()) { + if !deadline.IsZero() && deadline.Before(w.rws.conn.srv.now()) { // If we're setting a deadline in the past, reset the stream immediately // so writes after SetWriteDeadline returns will fail. st.onReadTimeout() @@ -2775,9 +2821,9 @@ func (w *responseWriter) SetReadDeadline(deadline time.Time) error { if deadline.IsZero() { st.readDeadline = nil } else if st.readDeadline == nil { - st.readDeadline = time.AfterFunc(deadline.Sub(time.Now()), st.onReadTimeout) + st.readDeadline = sc.srv.afterFunc(deadline.Sub(sc.srv.now()), st.onReadTimeout) } else { - st.readDeadline.Reset(deadline.Sub(time.Now())) + st.readDeadline.Reset(deadline.Sub(sc.srv.now())) } }) return nil @@ -2785,7 +2831,7 @@ func (w *responseWriter) SetReadDeadline(deadline time.Time) error { func (w *responseWriter) SetWriteDeadline(deadline time.Time) error { st := w.rws.stream - if !deadline.IsZero() && deadline.Before(time.Now()) { + if !deadline.IsZero() && deadline.Before(w.rws.conn.srv.now()) { // If we're setting a deadline in the past, reset the stream immediately // so writes after SetWriteDeadline returns will fail. st.onWriteTimeout() @@ -2801,9 +2847,9 @@ func (w *responseWriter) SetWriteDeadline(deadline time.Time) error { if deadline.IsZero() { st.writeDeadline = nil } else if st.writeDeadline == nil { - st.writeDeadline = time.AfterFunc(deadline.Sub(time.Now()), st.onWriteTimeout) + st.writeDeadline = sc.srv.afterFunc(deadline.Sub(sc.srv.now()), st.onWriteTimeout) } else { - st.writeDeadline.Reset(deadline.Sub(time.Now())) + st.writeDeadline.Reset(deadline.Sub(sc.srv.now())) } }) return nil diff --git a/vendor/golang.org/x/net/http2/timer.go b/vendor/golang.org/x/net/http2/timer.go new file mode 100644 index 000000000..0b1c17b81 --- /dev/null +++ b/vendor/golang.org/x/net/http2/timer.go @@ -0,0 +1,20 @@ +// Copyright 2024 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. +package http2 + +import "time" + +// A timer is a time.Timer, as an interface which can be replaced in tests. +type timer = interface { + C() <-chan time.Time + Reset(d time.Duration) bool + Stop() bool +} + +// timeTimer adapts a time.Timer to the timer interface. +type timeTimer struct { + *time.Timer +} + +func (t timeTimer) C() <-chan time.Time { return t.Timer.C } diff --git a/vendor/golang.org/x/net/http2/transport.go b/vendor/golang.org/x/net/http2/transport.go index c2a5b44b3..98a49c6b6 100644 --- a/vendor/golang.org/x/net/http2/transport.go +++ b/vendor/golang.org/x/net/http2/transport.go @@ -147,6 +147,12 @@ type Transport struct { // waiting for their turn. StrictMaxConcurrentStreams bool + // IdleConnTimeout is the maximum amount of time an idle + // (keep-alive) connection will remain idle before closing + // itself. + // Zero means no limit. + IdleConnTimeout time.Duration + // ReadIdleTimeout is the timeout after which a health check using ping // frame will be carried out if no frame is received on the connection. // Note that a ping response will is considered a received frame, so if @@ -178,6 +184,46 @@ type Transport struct { connPoolOnce sync.Once connPoolOrDef ClientConnPool // non-nil version of ConnPool + + *transportTestHooks +} + +// Hook points used for testing. +// Outside of tests, t.transportTestHooks is nil and these all have minimal implementations. +// Inside tests, see the testSyncHooks function docs. + +type transportTestHooks struct { + newclientconn func(*ClientConn) + group synctestGroupInterface +} + +func (t *Transport) markNewGoroutine() { + if t != nil && t.transportTestHooks != nil { + t.transportTestHooks.group.Join() + } +} + +// newTimer creates a new time.Timer, or a synthetic timer in tests. +func (t *Transport) newTimer(d time.Duration) timer { + if t.transportTestHooks != nil { + return t.transportTestHooks.group.NewTimer(d) + } + return timeTimer{time.NewTimer(d)} +} + +// afterFunc creates a new time.AfterFunc timer, or a synthetic timer in tests. +func (t *Transport) afterFunc(d time.Duration, f func()) timer { + if t.transportTestHooks != nil { + return t.transportTestHooks.group.AfterFunc(d, f) + } + return timeTimer{time.AfterFunc(d, f)} +} + +func (t *Transport) contextWithTimeout(ctx context.Context, d time.Duration) (context.Context, context.CancelFunc) { + if t.transportTestHooks != nil { + return t.transportTestHooks.group.ContextWithTimeout(ctx, d) + } + return context.WithTimeout(ctx, d) } func (t *Transport) maxHeaderListSize() uint32 { @@ -302,7 +348,7 @@ type ClientConn struct { readerErr error // set before readerDone is closed idleTimeout time.Duration // or 0 for never - idleTimer *time.Timer + idleTimer timer mu sync.Mutex // guards following cond *sync.Cond // hold mu; broadcast on flow/closed changes @@ -446,6 +492,7 @@ func (cs *clientStream) closeReqBodyLocked() { cs.reqBodyClosed = make(chan struct{}) reqBodyClosed := cs.reqBodyClosed go func() { + cs.cc.t.markNewGoroutine() cs.reqBody.Close() close(reqBodyClosed) }() @@ -537,15 +584,6 @@ func authorityAddr(scheme string, authority string) (addr string) { return net.JoinHostPort(host, port) } -var retryBackoffHook func(time.Duration) *time.Timer - -func backoffNewTimer(d time.Duration) *time.Timer { - if retryBackoffHook != nil { - return retryBackoffHook(d) - } - return time.NewTimer(d) -} - // RoundTripOpt is like RoundTrip, but takes options. func (t *Transport) RoundTripOpt(req *http.Request, opt RoundTripOpt) (*http.Response, error) { if !(req.URL.Scheme == "https" || (req.URL.Scheme == "http" && t.AllowHTTP)) { @@ -573,13 +611,13 @@ func (t *Transport) RoundTripOpt(req *http.Request, opt RoundTripOpt) (*http.Res backoff := float64(uint(1) << (uint(retry) - 1)) backoff += backoff * (0.1 * mathrand.Float64()) d := time.Second * time.Duration(backoff) - timer := backoffNewTimer(d) + tm := t.newTimer(d) select { - case <-timer.C: + case <-tm.C(): t.vlogf("RoundTrip retrying after failure: %v", roundTripErr) continue case <-req.Context().Done(): - timer.Stop() + tm.Stop() err = req.Context().Err() } } @@ -658,6 +696,9 @@ func canRetryError(err error) bool { } func (t *Transport) dialClientConn(ctx context.Context, addr string, singleUse bool) (*ClientConn, error) { + if t.transportTestHooks != nil { + return t.newClientConn(nil, singleUse) + } host, _, err := net.SplitHostPort(addr) if err != nil { return nil, err @@ -751,9 +792,10 @@ func (t *Transport) newClientConn(c net.Conn, singleUse bool) (*ClientConn, erro pings: make(map[[8]byte]chan struct{}), reqHeaderMu: make(chan struct{}, 1), } - if d := t.idleConnTimeout(); d != 0 { - cc.idleTimeout = d - cc.idleTimer = time.AfterFunc(d, cc.onIdleTimeout) + if t.transportTestHooks != nil { + t.markNewGoroutine() + t.transportTestHooks.newclientconn(cc) + c = cc.tconn } if VerboseLogs { t.vlogf("http2: Transport creating client conn %p to %v", cc, c.RemoteAddr()) @@ -818,6 +860,12 @@ func (t *Transport) newClientConn(c net.Conn, singleUse bool) (*ClientConn, erro return nil, cc.werr } + // Start the idle timer after the connection is fully initialized. + if d := t.idleConnTimeout(); d != 0 { + cc.idleTimeout = d + cc.idleTimer = t.afterFunc(d, cc.onIdleTimeout) + } + go cc.readLoop() return cc, nil } @@ -826,7 +874,7 @@ func (cc *ClientConn) healthCheck() { pingTimeout := cc.t.pingTimeout() // We don't need to periodically ping in the health check, because the readLoop of ClientConn will // trigger the healthCheck again if there is no frame received. - ctx, cancel := context.WithTimeout(context.Background(), pingTimeout) + ctx, cancel := cc.t.contextWithTimeout(context.Background(), pingTimeout) defer cancel() cc.vlogf("http2: Transport sending health check") err := cc.Ping(ctx) @@ -861,7 +909,20 @@ func (cc *ClientConn) setGoAway(f *GoAwayFrame) { } last := f.LastStreamID for streamID, cs := range cc.streams { - if streamID > last { + if streamID <= last { + // The server's GOAWAY indicates that it received this stream. + // It will either finish processing it, or close the connection + // without doing so. Either way, leave the stream alone for now. + continue + } + if streamID == 1 && cc.goAway.ErrCode != ErrCodeNo { + // Don't retry the first stream on a connection if we get a non-NO error. + // If the server is sending an error on a new connection, + // retrying the request on a new one probably isn't going to work. + cs.abortStreamLocked(fmt.Errorf("http2: Transport received GOAWAY from server ErrCode:%v", cc.goAway.ErrCode)) + } else { + // Aborting the stream with errClentConnGotGoAway indicates that + // the request should be retried on a new connection. cs.abortStreamLocked(errClientConnGotGoAway) } } @@ -1057,6 +1118,7 @@ func (cc *ClientConn) Shutdown(ctx context.Context) error { done := make(chan struct{}) cancelled := false // guarded by cc.mu go func() { + cc.t.markNewGoroutine() cc.mu.Lock() defer cc.mu.Unlock() for { @@ -1215,6 +1277,10 @@ func (cc *ClientConn) decrStreamReservationsLocked() { } func (cc *ClientConn) RoundTrip(req *http.Request) (*http.Response, error) { + return cc.roundTrip(req, nil) +} + +func (cc *ClientConn) roundTrip(req *http.Request, streamf func(*clientStream)) (*http.Response, error) { ctx := req.Context() cs := &clientStream{ cc: cc, @@ -1229,7 +1295,28 @@ func (cc *ClientConn) RoundTrip(req *http.Request) (*http.Response, error) { respHeaderRecv: make(chan struct{}), donec: make(chan struct{}), } - go cs.doRequest(req) + + // TODO(bradfitz): this is a copy of the logic in net/http. Unify somewhere? + if !cc.t.disableCompression() && + req.Header.Get("Accept-Encoding") == "" && + req.Header.Get("Range") == "" && + !cs.isHead { + // Request gzip only, not deflate. Deflate is ambiguous and + // not as universally supported anyway. + // See: https://zlib.net/zlib_faq.html#faq39 + // + // Note that we don't request this for HEAD requests, + // due to a bug in nginx: + // http://trac.nginx.org/nginx/ticket/358 + // https://golang.org/issue/5522 + // + // We don't request gzip if the request is for a range, since + // auto-decoding a portion of a gzipped document will just fail + // anyway. See https://golang.org/issue/8923 + cs.requestedGzip = true + } + + go cs.doRequest(req, streamf) waitDone := func() error { select { @@ -1322,8 +1409,9 @@ func (cc *ClientConn) RoundTrip(req *http.Request) (*http.Response, error) { // doRequest runs for the duration of the request lifetime. // // It sends the request and performs post-request cleanup (closing Request.Body, etc.). -func (cs *clientStream) doRequest(req *http.Request) { - err := cs.writeRequest(req) +func (cs *clientStream) doRequest(req *http.Request, streamf func(*clientStream)) { + cs.cc.t.markNewGoroutine() + err := cs.writeRequest(req, streamf) cs.cleanupWriteRequest(err) } @@ -1334,7 +1422,7 @@ func (cs *clientStream) doRequest(req *http.Request) { // // It returns non-nil if the request ends otherwise. // If the returned error is StreamError, the error Code may be used in resetting the stream. -func (cs *clientStream) writeRequest(req *http.Request) (err error) { +func (cs *clientStream) writeRequest(req *http.Request, streamf func(*clientStream)) (err error) { cc := cs.cc ctx := cs.ctx @@ -1372,24 +1460,8 @@ func (cs *clientStream) writeRequest(req *http.Request) (err error) { } cc.mu.Unlock() - // TODO(bradfitz): this is a copy of the logic in net/http. Unify somewhere? - if !cc.t.disableCompression() && - req.Header.Get("Accept-Encoding") == "" && - req.Header.Get("Range") == "" && - !cs.isHead { - // Request gzip only, not deflate. Deflate is ambiguous and - // not as universally supported anyway. - // See: https://zlib.net/zlib_faq.html#faq39 - // - // Note that we don't request this for HEAD requests, - // due to a bug in nginx: - // http://trac.nginx.org/nginx/ticket/358 - // https://golang.org/issue/5522 - // - // We don't request gzip if the request is for a range, since - // auto-decoding a portion of a gzipped document will just fail - // anyway. See https://golang.org/issue/8923 - cs.requestedGzip = true + if streamf != nil { + streamf(cs) } continueTimeout := cc.t.expectContinueTimeout() @@ -1452,9 +1524,9 @@ func (cs *clientStream) writeRequest(req *http.Request) (err error) { var respHeaderTimer <-chan time.Time var respHeaderRecv chan struct{} if d := cc.responseHeaderTimeout(); d != 0 { - timer := time.NewTimer(d) + timer := cc.t.newTimer(d) defer timer.Stop() - respHeaderTimer = timer.C + respHeaderTimer = timer.C() respHeaderRecv = cs.respHeaderRecv } // Wait until the peer half-closes its end of the stream, @@ -1875,6 +1947,22 @@ func (cs *clientStream) awaitFlowControl(maxBytes int) (taken int32, err error) } } +func validateHeaders(hdrs http.Header) string { + for k, vv := range hdrs { + if !httpguts.ValidHeaderFieldName(k) { + return fmt.Sprintf("name %q", k) + } + for _, v := range vv { + if !httpguts.ValidHeaderFieldValue(v) { + // Don't include the value in the error, + // because it may be sensitive. + return fmt.Sprintf("value for header %q", k) + } + } + } + return "" +} + var errNilRequestURL = errors.New("http2: Request.URI is nil") // requires cc.wmu be held. @@ -1912,19 +2000,14 @@ func (cc *ClientConn) encodeHeaders(req *http.Request, addGzipHeader bool, trail } } - // Check for any invalid headers and return an error before we + // Check for any invalid headers+trailers and return an error before we // potentially pollute our hpack state. (We want to be able to // continue to reuse the hpack encoder for future requests) - for k, vv := range req.Header { - if !httpguts.ValidHeaderFieldName(k) { - return nil, fmt.Errorf("invalid HTTP header name %q", k) - } - for _, v := range vv { - if !httpguts.ValidHeaderFieldValue(v) { - // Don't include the value in the error, because it may be sensitive. - return nil, fmt.Errorf("invalid HTTP header value for header %q", k) - } - } + if err := validateHeaders(req.Header); err != "" { + return nil, fmt.Errorf("invalid HTTP header %s", err) + } + if err := validateHeaders(req.Trailer); err != "" { + return nil, fmt.Errorf("invalid HTTP trailer %s", err) } enumerateHeaders := func(f func(name, value string)) { @@ -2165,6 +2248,7 @@ type clientConnReadLoop struct { // readLoop runs in its own goroutine and reads and dispatches frames. func (cc *ClientConn) readLoop() { + cc.t.markNewGoroutine() rl := &clientConnReadLoop{cc: cc} defer rl.cleanup() cc.readerErr = rl.run() @@ -2266,10 +2350,9 @@ func (rl *clientConnReadLoop) run() error { cc := rl.cc gotSettings := false readIdleTimeout := cc.t.ReadIdleTimeout - var t *time.Timer + var t timer if readIdleTimeout != 0 { - t = time.AfterFunc(readIdleTimeout, cc.healthCheck) - defer t.Stop() + t = cc.t.afterFunc(readIdleTimeout, cc.healthCheck) } for { f, err := cc.fr.ReadFrame() @@ -2684,7 +2767,7 @@ func (rl *clientConnReadLoop) processData(f *DataFrame) error { }) return nil } - if !cs.firstByte { + if !cs.pastHeaders { cc.logf("protocol error: received DATA before a HEADERS frame") rl.endStreamError(cs, StreamError{ StreamID: f.StreamID, @@ -2964,24 +3047,26 @@ func (cc *ClientConn) Ping(ctx context.Context) error { } cc.mu.Unlock() } - errc := make(chan error, 1) + var pingError error + errc := make(chan struct{}) go func() { + cc.t.markNewGoroutine() cc.wmu.Lock() defer cc.wmu.Unlock() - if err := cc.fr.WritePing(false, p); err != nil { - errc <- err + if pingError = cc.fr.WritePing(false, p); pingError != nil { + close(errc) return } - if err := cc.bw.Flush(); err != nil { - errc <- err + if pingError = cc.bw.Flush(); pingError != nil { + close(errc) return } }() select { case <-c: return nil - case err := <-errc: - return err + case <-errc: + return pingError case <-ctx.Done(): return ctx.Err() case <-cc.readerDone: @@ -3150,9 +3235,17 @@ func (rt noDialH2RoundTripper) RoundTrip(req *http.Request) (*http.Response, err } func (t *Transport) idleConnTimeout() time.Duration { + // to keep things backwards compatible, we use non-zero values of + // IdleConnTimeout, followed by using the IdleConnTimeout on the underlying + // http1 transport, followed by 0 + if t.IdleConnTimeout != 0 { + return t.IdleConnTimeout + } + if t.t1 != nil { return t.t1.IdleConnTimeout } + return 0 } diff --git a/vendor/golang.org/x/net/http2/writesched_priority.go b/vendor/golang.org/x/net/http2/writesched_priority.go index 0a242c669..f6783339d 100644 --- a/vendor/golang.org/x/net/http2/writesched_priority.go +++ b/vendor/golang.org/x/net/http2/writesched_priority.go @@ -443,8 +443,8 @@ func (ws *priorityWriteScheduler) addClosedOrIdleNode(list *[]*priorityNode, max } func (ws *priorityWriteScheduler) removeNode(n *priorityNode) { - for k := n.kids; k != nil; k = k.next { - k.setParent(n.parent) + for n.kids != nil { + n.kids.setParent(n.parent) } n.setParent(nil) delete(ws.nodes, n.id) diff --git a/vendor/golang.org/x/sys/unix/asm_zos_s390x.s b/vendor/golang.org/x/sys/unix/asm_zos_s390x.s index 2f67ba86d..813dfad7d 100644 --- a/vendor/golang.org/x/sys/unix/asm_zos_s390x.s +++ b/vendor/golang.org/x/sys/unix/asm_zos_s390x.s @@ -9,9 +9,11 @@ #define PSALAA 1208(R0) #define GTAB64(x) 80(x) #define LCA64(x) 88(x) +#define SAVSTACK_ASYNC(x) 336(x) // in the LCA #define CAA(x) 8(x) -#define EDCHPXV(x) 1016(x) // in the CAA -#define SAVSTACK_ASYNC(x) 336(x) // in the LCA +#define CEECAATHDID(x) 976(x) // in the CAA +#define EDCHPXV(x) 1016(x) // in the CAA +#define GOCB(x) 1104(x) // in the CAA // SS_*, where x=SAVSTACK_ASYNC #define SS_LE(x) 0(x) @@ -19,405 +21,362 @@ #define SS_ERRNO(x) 16(x) #define SS_ERRNOJR(x) 20(x) -#define LE_CALL BYTE $0x0D; BYTE $0x76; // BL R7, R6 +// Function Descriptor Offsets +#define __errno 0x156*16 +#define __err2ad 0x16C*16 -TEXT ·clearErrno(SB),NOSPLIT,$0-0 - BL addrerrno<>(SB) - MOVD $0, 0(R3) +// Call Instructions +#define LE_CALL BYTE $0x0D; BYTE $0x76 // BL R7, R6 +#define SVC_LOAD BYTE $0x0A; BYTE $0x08 // SVC 08 LOAD +#define SVC_DELETE BYTE $0x0A; BYTE $0x09 // SVC 09 DELETE + +DATA zosLibVec<>(SB)/8, $0 +GLOBL zosLibVec<>(SB), NOPTR, $8 + +TEXT ·initZosLibVec(SB), NOSPLIT|NOFRAME, $0-0 + MOVW PSALAA, R8 + MOVD LCA64(R8), R8 + MOVD CAA(R8), R8 + MOVD EDCHPXV(R8), R8 + MOVD R8, zosLibVec<>(SB) + RET + +TEXT ·GetZosLibVec(SB), NOSPLIT|NOFRAME, $0-0 + MOVD zosLibVec<>(SB), R8 + MOVD R8, ret+0(FP) + RET + +TEXT ·clearErrno(SB), NOSPLIT, $0-0 + BL addrerrno<>(SB) + MOVD $0, 0(R3) RET // Returns the address of errno in R3. -TEXT addrerrno<>(SB),NOSPLIT|NOFRAME,$0-0 +TEXT addrerrno<>(SB), NOSPLIT|NOFRAME, $0-0 // Get library control area (LCA). - MOVW PSALAA, R8 - MOVD LCA64(R8), R8 + MOVW PSALAA, R8 + MOVD LCA64(R8), R8 // Get __errno FuncDesc. - MOVD CAA(R8), R9 - MOVD EDCHPXV(R9), R9 - ADD $(0x156*16), R9 - LMG 0(R9), R5, R6 + MOVD CAA(R8), R9 + MOVD EDCHPXV(R9), R9 + ADD $(__errno), R9 + LMG 0(R9), R5, R6 // Switch to saved LE stack. - MOVD SAVSTACK_ASYNC(R8), R9 - MOVD 0(R9), R4 - MOVD $0, 0(R9) + MOVD SAVSTACK_ASYNC(R8), R9 + MOVD 0(R9), R4 + MOVD $0, 0(R9) // Call __errno function. LE_CALL NOPH // Switch back to Go stack. - XOR R0, R0 // Restore R0 to $0. - MOVD R4, 0(R9) // Save stack pointer. + XOR R0, R0 // Restore R0 to $0. + MOVD R4, 0(R9) // Save stack pointer. RET -TEXT ·syscall_syscall(SB),NOSPLIT,$0-56 - BL runtime·entersyscall(SB) - MOVD a1+8(FP), R1 - MOVD a2+16(FP), R2 - MOVD a3+24(FP), R3 +// func svcCall(fnptr unsafe.Pointer, argv *unsafe.Pointer, dsa *uint64) +TEXT ·svcCall(SB), NOSPLIT, $0 + BL runtime·save_g(SB) // Save g and stack pointer + MOVW PSALAA, R8 + MOVD LCA64(R8), R8 + MOVD SAVSTACK_ASYNC(R8), R9 + MOVD R15, 0(R9) - // Get library control area (LCA). - MOVW PSALAA, R8 - MOVD LCA64(R8), R8 + MOVD argv+8(FP), R1 // Move function arguments into registers + MOVD dsa+16(FP), g + MOVD fnptr+0(FP), R15 - // Get function. - MOVD CAA(R8), R9 - MOVD EDCHPXV(R9), R9 - MOVD trap+0(FP), R5 - SLD $4, R5 - ADD R5, R9 - LMG 0(R9), R5, R6 + BYTE $0x0D // Branch to function + BYTE $0xEF - // Restore LE stack. - MOVD SAVSTACK_ASYNC(R8), R9 - MOVD 0(R9), R4 - MOVD $0, 0(R9) + BL runtime·load_g(SB) // Restore g and stack pointer + MOVW PSALAA, R8 + MOVD LCA64(R8), R8 + MOVD SAVSTACK_ASYNC(R8), R9 + MOVD 0(R9), R15 - // Call function. - LE_CALL - NOPH - XOR R0, R0 // Restore R0 to $0. - MOVD R4, 0(R9) // Save stack pointer. - - MOVD R3, r1+32(FP) - MOVD R0, r2+40(FP) - MOVD R0, err+48(FP) - MOVW R3, R4 - CMP R4, $-1 - BNE done - BL addrerrno<>(SB) - MOVWZ 0(R3), R3 - MOVD R3, err+48(FP) -done: - BL runtime·exitsyscall(SB) RET -TEXT ·syscall_rawsyscall(SB),NOSPLIT,$0-56 - MOVD a1+8(FP), R1 - MOVD a2+16(FP), R2 - MOVD a3+24(FP), R3 - - // Get library control area (LCA). - MOVW PSALAA, R8 - MOVD LCA64(R8), R8 - - // Get function. - MOVD CAA(R8), R9 - MOVD EDCHPXV(R9), R9 - MOVD trap+0(FP), R5 - SLD $4, R5 - ADD R5, R9 - LMG 0(R9), R5, R6 +// func svcLoad(name *byte) unsafe.Pointer +TEXT ·svcLoad(SB), NOSPLIT, $0 + MOVD R15, R2 // Save go stack pointer + MOVD name+0(FP), R0 // Move SVC args into registers + MOVD $0x80000000, R1 + MOVD $0, R15 + SVC_LOAD + MOVW R15, R3 // Save return code from SVC + MOVD R2, R15 // Restore go stack pointer + CMP R3, $0 // Check SVC return code + BNE error + + MOVD $-2, R3 // Reset last bit of entry point to zero + AND R0, R3 + MOVD R3, ret+8(FP) // Return entry point returned by SVC + CMP R0, R3 // Check if last bit of entry point was set + BNE done + + MOVD R15, R2 // Save go stack pointer + MOVD $0, R15 // Move SVC args into registers (entry point still in r0 from SVC 08) + SVC_DELETE + MOVD R2, R15 // Restore go stack pointer - // Restore LE stack. - MOVD SAVSTACK_ASYNC(R8), R9 - MOVD 0(R9), R4 - MOVD $0, 0(R9) +error: + MOVD $0, ret+8(FP) // Return 0 on failure - // Call function. - LE_CALL - NOPH - XOR R0, R0 // Restore R0 to $0. - MOVD R4, 0(R9) // Save stack pointer. - - MOVD R3, r1+32(FP) - MOVD R0, r2+40(FP) - MOVD R0, err+48(FP) - MOVW R3, R4 - CMP R4, $-1 - BNE done - BL addrerrno<>(SB) - MOVWZ 0(R3), R3 - MOVD R3, err+48(FP) done: + XOR R0, R0 // Reset r0 to 0 RET -TEXT ·syscall_syscall6(SB),NOSPLIT,$0-80 - BL runtime·entersyscall(SB) - MOVD a1+8(FP), R1 - MOVD a2+16(FP), R2 - MOVD a3+24(FP), R3 +// func svcUnload(name *byte, fnptr unsafe.Pointer) int64 +TEXT ·svcUnload(SB), NOSPLIT, $0 + MOVD R15, R2 // Save go stack pointer + MOVD name+0(FP), R0 // Move SVC args into registers + MOVD fnptr+8(FP), R15 + SVC_DELETE + XOR R0, R0 // Reset r0 to 0 + MOVD R15, R1 // Save SVC return code + MOVD R2, R15 // Restore go stack pointer + MOVD R1, ret+16(FP) // Return SVC return code + RET +// func gettid() uint64 +TEXT ·gettid(SB), NOSPLIT, $0 // Get library control area (LCA). - MOVW PSALAA, R8 - MOVD LCA64(R8), R8 + MOVW PSALAA, R8 + MOVD LCA64(R8), R8 - // Get function. - MOVD CAA(R8), R9 - MOVD EDCHPXV(R9), R9 - MOVD trap+0(FP), R5 - SLD $4, R5 - ADD R5, R9 - LMG 0(R9), R5, R6 + // Get CEECAATHDID + MOVD CAA(R8), R9 + MOVD CEECAATHDID(R9), R9 + MOVD R9, ret+0(FP) - // Restore LE stack. - MOVD SAVSTACK_ASYNC(R8), R9 - MOVD 0(R9), R4 - MOVD $0, 0(R9) - - // Fill in parameter list. - MOVD a4+32(FP), R12 - MOVD R12, (2176+24)(R4) - MOVD a5+40(FP), R12 - MOVD R12, (2176+32)(R4) - MOVD a6+48(FP), R12 - MOVD R12, (2176+40)(R4) - - // Call function. - LE_CALL - NOPH - XOR R0, R0 // Restore R0 to $0. - MOVD R4, 0(R9) // Save stack pointer. - - MOVD R3, r1+56(FP) - MOVD R0, r2+64(FP) - MOVD R0, err+72(FP) - MOVW R3, R4 - CMP R4, $-1 - BNE done - BL addrerrno<>(SB) - MOVWZ 0(R3), R3 - MOVD R3, err+72(FP) -done: - BL runtime·exitsyscall(SB) RET -TEXT ·syscall_rawsyscall6(SB),NOSPLIT,$0-80 - MOVD a1+8(FP), R1 - MOVD a2+16(FP), R2 - MOVD a3+24(FP), R3 - - // Get library control area (LCA). - MOVW PSALAA, R8 - MOVD LCA64(R8), R8 - - // Get function. - MOVD CAA(R8), R9 - MOVD EDCHPXV(R9), R9 - MOVD trap+0(FP), R5 - SLD $4, R5 - ADD R5, R9 - LMG 0(R9), R5, R6 +// +// Call LE function, if the return is -1 +// errno and errno2 is retrieved +// +TEXT ·CallLeFuncWithErr(SB), NOSPLIT, $0 + MOVW PSALAA, R8 + MOVD LCA64(R8), R8 + MOVD CAA(R8), R9 + MOVD g, GOCB(R9) // Restore LE stack. - MOVD SAVSTACK_ASYNC(R8), R9 - MOVD 0(R9), R4 - MOVD $0, 0(R9) - - // Fill in parameter list. - MOVD a4+32(FP), R12 - MOVD R12, (2176+24)(R4) - MOVD a5+40(FP), R12 - MOVD R12, (2176+32)(R4) - MOVD a6+48(FP), R12 - MOVD R12, (2176+40)(R4) - - // Call function. - LE_CALL + MOVD SAVSTACK_ASYNC(R8), R9 // R9-> LE stack frame saving address + MOVD 0(R9), R4 // R4-> restore previously saved stack frame pointer + + MOVD parms_base+8(FP), R7 // R7 -> argument array + MOVD parms_len+16(FP), R8 // R8 number of arguments + + // arg 1 ---> R1 + CMP R8, $0 + BEQ docall + SUB $1, R8 + MOVD 0(R7), R1 + + // arg 2 ---> R2 + CMP R8, $0 + BEQ docall + SUB $1, R8 + ADD $8, R7 + MOVD 0(R7), R2 + + // arg 3 --> R3 + CMP R8, $0 + BEQ docall + SUB $1, R8 + ADD $8, R7 + MOVD 0(R7), R3 + + CMP R8, $0 + BEQ docall + MOVD $2176+16, R6 // starting LE stack address-8 to store 4th argument + +repeat: + ADD $8, R7 + MOVD 0(R7), R0 // advance arg pointer by 8 byte + ADD $8, R6 // advance LE argument address by 8 byte + MOVD R0, (R4)(R6*1) // copy argument from go-slice to le-frame + SUB $1, R8 + CMP R8, $0 + BNE repeat + +docall: + MOVD funcdesc+0(FP), R8 // R8-> function descriptor + LMG 0(R8), R5, R6 + MOVD $0, 0(R9) // R9 address of SAVSTACK_ASYNC + LE_CALL // balr R7, R6 (return #1) + NOPH + MOVD R3, ret+32(FP) + CMP R3, $-1 // compare result to -1 + BNE done + + // retrieve errno and errno2 + MOVD zosLibVec<>(SB), R8 + ADD $(__errno), R8 + LMG 0(R8), R5, R6 + LE_CALL // balr R7, R6 __errno (return #3) NOPH - XOR R0, R0 // Restore R0 to $0. - MOVD R4, 0(R9) // Save stack pointer. - - MOVD R3, r1+56(FP) - MOVD R0, r2+64(FP) - MOVD R0, err+72(FP) - MOVW R3, R4 - CMP R4, $-1 - BNE done - BL ·rrno<>(SB) - MOVWZ 0(R3), R3 - MOVD R3, err+72(FP) + MOVWZ 0(R3), R3 + MOVD R3, err+48(FP) + MOVD zosLibVec<>(SB), R8 + ADD $(__err2ad), R8 + LMG 0(R8), R5, R6 + LE_CALL // balr R7, R6 __err2ad (return #2) + NOPH + MOVW (R3), R2 // retrieve errno2 + MOVD R2, errno2+40(FP) // store in return area + done: + MOVD R4, 0(R9) // Save stack pointer. RET -TEXT ·syscall_syscall9(SB),NOSPLIT,$0 - BL runtime·entersyscall(SB) - MOVD a1+8(FP), R1 - MOVD a2+16(FP), R2 - MOVD a3+24(FP), R3 - - // Get library control area (LCA). - MOVW PSALAA, R8 - MOVD LCA64(R8), R8 - - // Get function. - MOVD CAA(R8), R9 - MOVD EDCHPXV(R9), R9 - MOVD trap+0(FP), R5 - SLD $4, R5 - ADD R5, R9 - LMG 0(R9), R5, R6 +// +// Call LE function, if the return is 0 +// errno and errno2 is retrieved +// +TEXT ·CallLeFuncWithPtrReturn(SB), NOSPLIT, $0 + MOVW PSALAA, R8 + MOVD LCA64(R8), R8 + MOVD CAA(R8), R9 + MOVD g, GOCB(R9) // Restore LE stack. - MOVD SAVSTACK_ASYNC(R8), R9 - MOVD 0(R9), R4 - MOVD $0, 0(R9) - - // Fill in parameter list. - MOVD a4+32(FP), R12 - MOVD R12, (2176+24)(R4) - MOVD a5+40(FP), R12 - MOVD R12, (2176+32)(R4) - MOVD a6+48(FP), R12 - MOVD R12, (2176+40)(R4) - MOVD a7+56(FP), R12 - MOVD R12, (2176+48)(R4) - MOVD a8+64(FP), R12 - MOVD R12, (2176+56)(R4) - MOVD a9+72(FP), R12 - MOVD R12, (2176+64)(R4) - - // Call function. - LE_CALL + MOVD SAVSTACK_ASYNC(R8), R9 // R9-> LE stack frame saving address + MOVD 0(R9), R4 // R4-> restore previously saved stack frame pointer + + MOVD parms_base+8(FP), R7 // R7 -> argument array + MOVD parms_len+16(FP), R8 // R8 number of arguments + + // arg 1 ---> R1 + CMP R8, $0 + BEQ docall + SUB $1, R8 + MOVD 0(R7), R1 + + // arg 2 ---> R2 + CMP R8, $0 + BEQ docall + SUB $1, R8 + ADD $8, R7 + MOVD 0(R7), R2 + + // arg 3 --> R3 + CMP R8, $0 + BEQ docall + SUB $1, R8 + ADD $8, R7 + MOVD 0(R7), R3 + + CMP R8, $0 + BEQ docall + MOVD $2176+16, R6 // starting LE stack address-8 to store 4th argument + +repeat: + ADD $8, R7 + MOVD 0(R7), R0 // advance arg pointer by 8 byte + ADD $8, R6 // advance LE argument address by 8 byte + MOVD R0, (R4)(R6*1) // copy argument from go-slice to le-frame + SUB $1, R8 + CMP R8, $0 + BNE repeat + +docall: + MOVD funcdesc+0(FP), R8 // R8-> function descriptor + LMG 0(R8), R5, R6 + MOVD $0, 0(R9) // R9 address of SAVSTACK_ASYNC + LE_CALL // balr R7, R6 (return #1) NOPH - XOR R0, R0 // Restore R0 to $0. - MOVD R4, 0(R9) // Save stack pointer. - - MOVD R3, r1+80(FP) - MOVD R0, r2+88(FP) - MOVD R0, err+96(FP) - MOVW R3, R4 - CMP R4, $-1 - BNE done - BL addrerrno<>(SB) - MOVWZ 0(R3), R3 - MOVD R3, err+96(FP) -done: - BL runtime·exitsyscall(SB) - RET - -TEXT ·syscall_rawsyscall9(SB),NOSPLIT,$0 - MOVD a1+8(FP), R1 - MOVD a2+16(FP), R2 - MOVD a3+24(FP), R3 - - // Get library control area (LCA). - MOVW PSALAA, R8 - MOVD LCA64(R8), R8 - - // Get function. - MOVD CAA(R8), R9 - MOVD EDCHPXV(R9), R9 - MOVD trap+0(FP), R5 - SLD $4, R5 - ADD R5, R9 - LMG 0(R9), R5, R6 - - // Restore LE stack. - MOVD SAVSTACK_ASYNC(R8), R9 - MOVD 0(R9), R4 - MOVD $0, 0(R9) - - // Fill in parameter list. - MOVD a4+32(FP), R12 - MOVD R12, (2176+24)(R4) - MOVD a5+40(FP), R12 - MOVD R12, (2176+32)(R4) - MOVD a6+48(FP), R12 - MOVD R12, (2176+40)(R4) - MOVD a7+56(FP), R12 - MOVD R12, (2176+48)(R4) - MOVD a8+64(FP), R12 - MOVD R12, (2176+56)(R4) - MOVD a9+72(FP), R12 - MOVD R12, (2176+64)(R4) - - // Call function. - LE_CALL + MOVD R3, ret+32(FP) + CMP R3, $0 // compare result to 0 + BNE done + + // retrieve errno and errno2 + MOVD zosLibVec<>(SB), R8 + ADD $(__errno), R8 + LMG 0(R8), R5, R6 + LE_CALL // balr R7, R6 __errno (return #3) NOPH - XOR R0, R0 // Restore R0 to $0. - MOVD R4, 0(R9) // Save stack pointer. - - MOVD R3, r1+80(FP) - MOVD R0, r2+88(FP) - MOVD R0, err+96(FP) - MOVW R3, R4 - CMP R4, $-1 - BNE done - BL addrerrno<>(SB) - MOVWZ 0(R3), R3 - MOVD R3, err+96(FP) -done: - RET - -// func svcCall(fnptr unsafe.Pointer, argv *unsafe.Pointer, dsa *uint64) -TEXT ·svcCall(SB),NOSPLIT,$0 - BL runtime·save_g(SB) // Save g and stack pointer - MOVW PSALAA, R8 - MOVD LCA64(R8), R8 - MOVD SAVSTACK_ASYNC(R8), R9 - MOVD R15, 0(R9) - - MOVD argv+8(FP), R1 // Move function arguments into registers - MOVD dsa+16(FP), g - MOVD fnptr+0(FP), R15 - - BYTE $0x0D // Branch to function - BYTE $0xEF - - BL runtime·load_g(SB) // Restore g and stack pointer - MOVW PSALAA, R8 - MOVD LCA64(R8), R8 - MOVD SAVSTACK_ASYNC(R8), R9 - MOVD 0(R9), R15 - - RET - -// func svcLoad(name *byte) unsafe.Pointer -TEXT ·svcLoad(SB),NOSPLIT,$0 - MOVD R15, R2 // Save go stack pointer - MOVD name+0(FP), R0 // Move SVC args into registers - MOVD $0x80000000, R1 - MOVD $0, R15 - BYTE $0x0A // SVC 08 LOAD - BYTE $0x08 - MOVW R15, R3 // Save return code from SVC - MOVD R2, R15 // Restore go stack pointer - CMP R3, $0 // Check SVC return code - BNE error - - MOVD $-2, R3 // Reset last bit of entry point to zero - AND R0, R3 - MOVD R3, addr+8(FP) // Return entry point returned by SVC - CMP R0, R3 // Check if last bit of entry point was set - BNE done - - MOVD R15, R2 // Save go stack pointer - MOVD $0, R15 // Move SVC args into registers (entry point still in r0 from SVC 08) - BYTE $0x0A // SVC 09 DELETE - BYTE $0x09 - MOVD R2, R15 // Restore go stack pointer + MOVWZ 0(R3), R3 + MOVD R3, err+48(FP) + MOVD zosLibVec<>(SB), R8 + ADD $(__err2ad), R8 + LMG 0(R8), R5, R6 + LE_CALL // balr R7, R6 __err2ad (return #2) + NOPH + MOVW (R3), R2 // retrieve errno2 + MOVD R2, errno2+40(FP) // store in return area + XOR R2, R2 + MOVWZ R2, (R3) // clear errno2 -error: - MOVD $0, addr+8(FP) // Return 0 on failure done: - XOR R0, R0 // Reset r0 to 0 + MOVD R4, 0(R9) // Save stack pointer. RET -// func svcUnload(name *byte, fnptr unsafe.Pointer) int64 -TEXT ·svcUnload(SB),NOSPLIT,$0 - MOVD R15, R2 // Save go stack pointer - MOVD name+0(FP), R0 // Move SVC args into registers - MOVD addr+8(FP), R15 - BYTE $0x0A // SVC 09 - BYTE $0x09 - XOR R0, R0 // Reset r0 to 0 - MOVD R15, R1 // Save SVC return code - MOVD R2, R15 // Restore go stack pointer - MOVD R1, rc+0(FP) // Return SVC return code +// +// function to test if a pointer can be safely dereferenced (content read) +// return 0 for succces +// +TEXT ·ptrtest(SB), NOSPLIT, $0-16 + MOVD arg+0(FP), R10 // test pointer in R10 + + // set up R2 to point to CEECAADMC + BYTE $0xE3; BYTE $0x20; BYTE $0x04; BYTE $0xB8; BYTE $0x00; BYTE $0x17 // llgt 2,1208 + BYTE $0xB9; BYTE $0x17; BYTE $0x00; BYTE $0x22 // llgtr 2,2 + BYTE $0xA5; BYTE $0x26; BYTE $0x7F; BYTE $0xFF // nilh 2,32767 + BYTE $0xE3; BYTE $0x22; BYTE $0x00; BYTE $0x58; BYTE $0x00; BYTE $0x04 // lg 2,88(2) + BYTE $0xE3; BYTE $0x22; BYTE $0x00; BYTE $0x08; BYTE $0x00; BYTE $0x04 // lg 2,8(2) + BYTE $0x41; BYTE $0x22; BYTE $0x03; BYTE $0x68 // la 2,872(2) + + // set up R5 to point to the "shunt" path which set 1 to R3 (failure) + BYTE $0xB9; BYTE $0x82; BYTE $0x00; BYTE $0x33 // xgr 3,3 + BYTE $0xA7; BYTE $0x55; BYTE $0x00; BYTE $0x04 // bras 5,lbl1 + BYTE $0xA7; BYTE $0x39; BYTE $0x00; BYTE $0x01 // lghi 3,1 + + // if r3 is not zero (failed) then branch to finish + BYTE $0xB9; BYTE $0x02; BYTE $0x00; BYTE $0x33 // lbl1 ltgr 3,3 + BYTE $0xA7; BYTE $0x74; BYTE $0x00; BYTE $0x08 // brc b'0111',lbl2 + + // stomic store shunt address in R5 into CEECAADMC + BYTE $0xE3; BYTE $0x52; BYTE $0x00; BYTE $0x00; BYTE $0x00; BYTE $0x24 // stg 5,0(2) + + // now try reading from the test pointer in R10, if it fails it branches to the "lghi" instruction above + BYTE $0xE3; BYTE $0x9A; BYTE $0x00; BYTE $0x00; BYTE $0x00; BYTE $0x04 // lg 9,0(10) + + // finish here, restore 0 into CEECAADMC + BYTE $0xB9; BYTE $0x82; BYTE $0x00; BYTE $0x99 // lbl2 xgr 9,9 + BYTE $0xE3; BYTE $0x92; BYTE $0x00; BYTE $0x00; BYTE $0x00; BYTE $0x24 // stg 9,0(2) + MOVD R3, ret+8(FP) // result in R3 RET -// func gettid() uint64 -TEXT ·gettid(SB), NOSPLIT, $0 - // Get library control area (LCA). - MOVW PSALAA, R8 - MOVD LCA64(R8), R8 - - // Get CEECAATHDID - MOVD CAA(R8), R9 - MOVD 0x3D0(R9), R9 - MOVD R9, ret+0(FP) - +// +// function to test if a untptr can be loaded from a pointer +// return 1: the 8-byte content +// 2: 0 for success, 1 for failure +// +// func safeload(ptr uintptr) ( value uintptr, error uintptr) +TEXT ·safeload(SB), NOSPLIT, $0-24 + MOVD ptr+0(FP), R10 // test pointer in R10 + MOVD $0x0, R6 + BYTE $0xE3; BYTE $0x20; BYTE $0x04; BYTE $0xB8; BYTE $0x00; BYTE $0x17 // llgt 2,1208 + BYTE $0xB9; BYTE $0x17; BYTE $0x00; BYTE $0x22 // llgtr 2,2 + BYTE $0xA5; BYTE $0x26; BYTE $0x7F; BYTE $0xFF // nilh 2,32767 + BYTE $0xE3; BYTE $0x22; BYTE $0x00; BYTE $0x58; BYTE $0x00; BYTE $0x04 // lg 2,88(2) + BYTE $0xE3; BYTE $0x22; BYTE $0x00; BYTE $0x08; BYTE $0x00; BYTE $0x04 // lg 2,8(2) + BYTE $0x41; BYTE $0x22; BYTE $0x03; BYTE $0x68 // la 2,872(2) + BYTE $0xB9; BYTE $0x82; BYTE $0x00; BYTE $0x33 // xgr 3,3 + BYTE $0xA7; BYTE $0x55; BYTE $0x00; BYTE $0x04 // bras 5,lbl1 + BYTE $0xA7; BYTE $0x39; BYTE $0x00; BYTE $0x01 // lghi 3,1 + BYTE $0xB9; BYTE $0x02; BYTE $0x00; BYTE $0x33 // lbl1 ltgr 3,3 + BYTE $0xA7; BYTE $0x74; BYTE $0x00; BYTE $0x08 // brc b'0111',lbl2 + BYTE $0xE3; BYTE $0x52; BYTE $0x00; BYTE $0x00; BYTE $0x00; BYTE $0x24 // stg 5,0(2) + BYTE $0xE3; BYTE $0x6A; BYTE $0x00; BYTE $0x00; BYTE $0x00; BYTE $0x04 // lg 6,0(10) + BYTE $0xB9; BYTE $0x82; BYTE $0x00; BYTE $0x99 // lbl2 xgr 9,9 + BYTE $0xE3; BYTE $0x92; BYTE $0x00; BYTE $0x00; BYTE $0x00; BYTE $0x24 // stg 9,0(2) + MOVD R6, value+8(FP) // result in R6 + MOVD R3, error+16(FP) // error in R3 RET diff --git a/vendor/golang.org/x/sys/unix/bpxsvc_zos.go b/vendor/golang.org/x/sys/unix/bpxsvc_zos.go new file mode 100644 index 000000000..39d647d86 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/bpxsvc_zos.go @@ -0,0 +1,657 @@ +// Copyright 2024 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build zos + +package unix + +import ( + "bytes" + "fmt" + "unsafe" +) + +//go:noescape +func bpxcall(plist []unsafe.Pointer, bpx_offset int64) + +//go:noescape +func A2e([]byte) + +//go:noescape +func E2a([]byte) + +const ( + BPX4STA = 192 // stat + BPX4FST = 104 // fstat + BPX4LST = 132 // lstat + BPX4OPN = 156 // open + BPX4CLO = 72 // close + BPX4CHR = 500 // chattr + BPX4FCR = 504 // fchattr + BPX4LCR = 1180 // lchattr + BPX4CTW = 492 // cond_timed_wait + BPX4GTH = 1056 // __getthent + BPX4PTQ = 412 // pthread_quiesc + BPX4PTR = 320 // ptrace +) + +const ( + //options + //byte1 + BPX_OPNFHIGH = 0x80 + //byte2 + BPX_OPNFEXEC = 0x80 + //byte3 + BPX_O_NOLARGEFILE = 0x08 + BPX_O_LARGEFILE = 0x04 + BPX_O_ASYNCSIG = 0x02 + BPX_O_SYNC = 0x01 + //byte4 + BPX_O_CREXCL = 0xc0 + BPX_O_CREAT = 0x80 + BPX_O_EXCL = 0x40 + BPX_O_NOCTTY = 0x20 + BPX_O_TRUNC = 0x10 + BPX_O_APPEND = 0x08 + BPX_O_NONBLOCK = 0x04 + BPX_FNDELAY = 0x04 + BPX_O_RDWR = 0x03 + BPX_O_RDONLY = 0x02 + BPX_O_WRONLY = 0x01 + BPX_O_ACCMODE = 0x03 + BPX_O_GETFL = 0x0f + + //mode + // byte1 (file type) + BPX_FT_DIR = 1 + BPX_FT_CHARSPEC = 2 + BPX_FT_REGFILE = 3 + BPX_FT_FIFO = 4 + BPX_FT_SYMLINK = 5 + BPX_FT_SOCKET = 6 + //byte3 + BPX_S_ISUID = 0x08 + BPX_S_ISGID = 0x04 + BPX_S_ISVTX = 0x02 + BPX_S_IRWXU1 = 0x01 + BPX_S_IRUSR = 0x01 + //byte4 + BPX_S_IRWXU2 = 0xc0 + BPX_S_IWUSR = 0x80 + BPX_S_IXUSR = 0x40 + BPX_S_IRWXG = 0x38 + BPX_S_IRGRP = 0x20 + BPX_S_IWGRP = 0x10 + BPX_S_IXGRP = 0x08 + BPX_S_IRWXOX = 0x07 + BPX_S_IROTH = 0x04 + BPX_S_IWOTH = 0x02 + BPX_S_IXOTH = 0x01 + + CW_INTRPT = 1 + CW_CONDVAR = 32 + CW_TIMEOUT = 64 + + PGTHA_NEXT = 2 + PGTHA_CURRENT = 1 + PGTHA_FIRST = 0 + PGTHA_LAST = 3 + PGTHA_PROCESS = 0x80 + PGTHA_CONTTY = 0x40 + PGTHA_PATH = 0x20 + PGTHA_COMMAND = 0x10 + PGTHA_FILEDATA = 0x08 + PGTHA_THREAD = 0x04 + PGTHA_PTAG = 0x02 + PGTHA_COMMANDLONG = 0x01 + PGTHA_THREADFAST = 0x80 + PGTHA_FILEPATH = 0x40 + PGTHA_THDSIGMASK = 0x20 + // thread quiece mode + QUIESCE_TERM int32 = 1 + QUIESCE_FORCE int32 = 2 + QUIESCE_QUERY int32 = 3 + QUIESCE_FREEZE int32 = 4 + QUIESCE_UNFREEZE int32 = 5 + FREEZE_THIS_THREAD int32 = 6 + FREEZE_EXIT int32 = 8 + QUIESCE_SRB int32 = 9 +) + +type Pgtha struct { + Pid uint32 // 0 + Tid0 uint32 // 4 + Tid1 uint32 + Accesspid byte // C + Accesstid byte // D + Accessasid uint16 // E + Loginname [8]byte // 10 + Flag1 byte // 18 + Flag1b2 byte // 19 +} + +type Bpxystat_t struct { // DSECT BPXYSTAT + St_id [4]uint8 // 0 + St_length uint16 // 0x4 + St_version uint16 // 0x6 + St_mode uint32 // 0x8 + St_ino uint32 // 0xc + St_dev uint32 // 0x10 + St_nlink uint32 // 0x14 + St_uid uint32 // 0x18 + St_gid uint32 // 0x1c + St_size uint64 // 0x20 + St_atime uint32 // 0x28 + St_mtime uint32 // 0x2c + St_ctime uint32 // 0x30 + St_rdev uint32 // 0x34 + St_auditoraudit uint32 // 0x38 + St_useraudit uint32 // 0x3c + St_blksize uint32 // 0x40 + St_createtime uint32 // 0x44 + St_auditid [4]uint32 // 0x48 + St_res01 uint32 // 0x58 + Ft_ccsid uint16 // 0x5c + Ft_flags uint16 // 0x5e + St_res01a [2]uint32 // 0x60 + St_res02 uint32 // 0x68 + St_blocks uint32 // 0x6c + St_opaque [3]uint8 // 0x70 + St_visible uint8 // 0x73 + St_reftime uint32 // 0x74 + St_fid uint64 // 0x78 + St_filefmt uint8 // 0x80 + St_fspflag2 uint8 // 0x81 + St_res03 [2]uint8 // 0x82 + St_ctimemsec uint32 // 0x84 + St_seclabel [8]uint8 // 0x88 + St_res04 [4]uint8 // 0x90 + // end of version 1 + _ uint32 // 0x94 + St_atime64 uint64 // 0x98 + St_mtime64 uint64 // 0xa0 + St_ctime64 uint64 // 0xa8 + St_createtime64 uint64 // 0xb0 + St_reftime64 uint64 // 0xb8 + _ uint64 // 0xc0 + St_res05 [16]uint8 // 0xc8 + // end of version 2 +} + +type BpxFilestatus struct { + Oflag1 byte + Oflag2 byte + Oflag3 byte + Oflag4 byte +} + +type BpxMode struct { + Ftype byte + Mode1 byte + Mode2 byte + Mode3 byte +} + +// Thr attribute structure for extended attributes +type Bpxyatt_t struct { // DSECT BPXYATT + Att_id [4]uint8 + Att_version uint16 + Att_res01 [2]uint8 + Att_setflags1 uint8 + Att_setflags2 uint8 + Att_setflags3 uint8 + Att_setflags4 uint8 + Att_mode uint32 + Att_uid uint32 + Att_gid uint32 + Att_opaquemask [3]uint8 + Att_visblmaskres uint8 + Att_opaque [3]uint8 + Att_visibleres uint8 + Att_size_h uint32 + Att_size_l uint32 + Att_atime uint32 + Att_mtime uint32 + Att_auditoraudit uint32 + Att_useraudit uint32 + Att_ctime uint32 + Att_reftime uint32 + // end of version 1 + Att_filefmt uint8 + Att_res02 [3]uint8 + Att_filetag uint32 + Att_res03 [8]uint8 + // end of version 2 + Att_atime64 uint64 + Att_mtime64 uint64 + Att_ctime64 uint64 + Att_reftime64 uint64 + Att_seclabel [8]uint8 + Att_ver3res02 [8]uint8 + // end of version 3 +} + +func BpxOpen(name string, options *BpxFilestatus, mode *BpxMode) (rv int32, rc int32, rn int32) { + if len(name) < 1024 { + var namebuf [1024]byte + sz := int32(copy(namebuf[:], name)) + A2e(namebuf[:sz]) + var parms [7]unsafe.Pointer + parms[0] = unsafe.Pointer(&sz) + parms[1] = unsafe.Pointer(&namebuf[0]) + parms[2] = unsafe.Pointer(options) + parms[3] = unsafe.Pointer(mode) + parms[4] = unsafe.Pointer(&rv) + parms[5] = unsafe.Pointer(&rc) + parms[6] = unsafe.Pointer(&rn) + bpxcall(parms[:], BPX4OPN) + return rv, rc, rn + } + return -1, -1, -1 +} + +func BpxClose(fd int32) (rv int32, rc int32, rn int32) { + var parms [4]unsafe.Pointer + parms[0] = unsafe.Pointer(&fd) + parms[1] = unsafe.Pointer(&rv) + parms[2] = unsafe.Pointer(&rc) + parms[3] = unsafe.Pointer(&rn) + bpxcall(parms[:], BPX4CLO) + return rv, rc, rn +} + +func BpxFileFStat(fd int32, st *Bpxystat_t) (rv int32, rc int32, rn int32) { + st.St_id = [4]uint8{0xe2, 0xe3, 0xc1, 0xe3} + st.St_version = 2 + stat_sz := uint32(unsafe.Sizeof(*st)) + var parms [6]unsafe.Pointer + parms[0] = unsafe.Pointer(&fd) + parms[1] = unsafe.Pointer(&stat_sz) + parms[2] = unsafe.Pointer(st) + parms[3] = unsafe.Pointer(&rv) + parms[4] = unsafe.Pointer(&rc) + parms[5] = unsafe.Pointer(&rn) + bpxcall(parms[:], BPX4FST) + return rv, rc, rn +} + +func BpxFileStat(name string, st *Bpxystat_t) (rv int32, rc int32, rn int32) { + if len(name) < 1024 { + var namebuf [1024]byte + sz := int32(copy(namebuf[:], name)) + A2e(namebuf[:sz]) + st.St_id = [4]uint8{0xe2, 0xe3, 0xc1, 0xe3} + st.St_version = 2 + stat_sz := uint32(unsafe.Sizeof(*st)) + var parms [7]unsafe.Pointer + parms[0] = unsafe.Pointer(&sz) + parms[1] = unsafe.Pointer(&namebuf[0]) + parms[2] = unsafe.Pointer(&stat_sz) + parms[3] = unsafe.Pointer(st) + parms[4] = unsafe.Pointer(&rv) + parms[5] = unsafe.Pointer(&rc) + parms[6] = unsafe.Pointer(&rn) + bpxcall(parms[:], BPX4STA) + return rv, rc, rn + } + return -1, -1, -1 +} + +func BpxFileLStat(name string, st *Bpxystat_t) (rv int32, rc int32, rn int32) { + if len(name) < 1024 { + var namebuf [1024]byte + sz := int32(copy(namebuf[:], name)) + A2e(namebuf[:sz]) + st.St_id = [4]uint8{0xe2, 0xe3, 0xc1, 0xe3} + st.St_version = 2 + stat_sz := uint32(unsafe.Sizeof(*st)) + var parms [7]unsafe.Pointer + parms[0] = unsafe.Pointer(&sz) + parms[1] = unsafe.Pointer(&namebuf[0]) + parms[2] = unsafe.Pointer(&stat_sz) + parms[3] = unsafe.Pointer(st) + parms[4] = unsafe.Pointer(&rv) + parms[5] = unsafe.Pointer(&rc) + parms[6] = unsafe.Pointer(&rn) + bpxcall(parms[:], BPX4LST) + return rv, rc, rn + } + return -1, -1, -1 +} + +func BpxChattr(path string, attr *Bpxyatt_t) (rv int32, rc int32, rn int32) { + if len(path) >= 1024 { + return -1, -1, -1 + } + var namebuf [1024]byte + sz := int32(copy(namebuf[:], path)) + A2e(namebuf[:sz]) + attr_sz := uint32(unsafe.Sizeof(*attr)) + var parms [7]unsafe.Pointer + parms[0] = unsafe.Pointer(&sz) + parms[1] = unsafe.Pointer(&namebuf[0]) + parms[2] = unsafe.Pointer(&attr_sz) + parms[3] = unsafe.Pointer(attr) + parms[4] = unsafe.Pointer(&rv) + parms[5] = unsafe.Pointer(&rc) + parms[6] = unsafe.Pointer(&rn) + bpxcall(parms[:], BPX4CHR) + return rv, rc, rn +} + +func BpxLchattr(path string, attr *Bpxyatt_t) (rv int32, rc int32, rn int32) { + if len(path) >= 1024 { + return -1, -1, -1 + } + var namebuf [1024]byte + sz := int32(copy(namebuf[:], path)) + A2e(namebuf[:sz]) + attr_sz := uint32(unsafe.Sizeof(*attr)) + var parms [7]unsafe.Pointer + parms[0] = unsafe.Pointer(&sz) + parms[1] = unsafe.Pointer(&namebuf[0]) + parms[2] = unsafe.Pointer(&attr_sz) + parms[3] = unsafe.Pointer(attr) + parms[4] = unsafe.Pointer(&rv) + parms[5] = unsafe.Pointer(&rc) + parms[6] = unsafe.Pointer(&rn) + bpxcall(parms[:], BPX4LCR) + return rv, rc, rn +} + +func BpxFchattr(fd int32, attr *Bpxyatt_t) (rv int32, rc int32, rn int32) { + attr_sz := uint32(unsafe.Sizeof(*attr)) + var parms [6]unsafe.Pointer + parms[0] = unsafe.Pointer(&fd) + parms[1] = unsafe.Pointer(&attr_sz) + parms[2] = unsafe.Pointer(attr) + parms[3] = unsafe.Pointer(&rv) + parms[4] = unsafe.Pointer(&rc) + parms[5] = unsafe.Pointer(&rn) + bpxcall(parms[:], BPX4FCR) + return rv, rc, rn +} + +func BpxCondTimedWait(sec uint32, nsec uint32, events uint32, secrem *uint32, nsecrem *uint32) (rv int32, rc int32, rn int32) { + var parms [8]unsafe.Pointer + parms[0] = unsafe.Pointer(&sec) + parms[1] = unsafe.Pointer(&nsec) + parms[2] = unsafe.Pointer(&events) + parms[3] = unsafe.Pointer(secrem) + parms[4] = unsafe.Pointer(nsecrem) + parms[5] = unsafe.Pointer(&rv) + parms[6] = unsafe.Pointer(&rc) + parms[7] = unsafe.Pointer(&rn) + bpxcall(parms[:], BPX4CTW) + return rv, rc, rn +} +func BpxGetthent(in *Pgtha, outlen *uint32, out unsafe.Pointer) (rv int32, rc int32, rn int32) { + var parms [7]unsafe.Pointer + inlen := uint32(26) // nothing else will work. Go says Pgtha is 28-byte because of alignment, but Pgtha is "packed" and must be 26-byte + parms[0] = unsafe.Pointer(&inlen) + parms[1] = unsafe.Pointer(&in) + parms[2] = unsafe.Pointer(outlen) + parms[3] = unsafe.Pointer(&out) + parms[4] = unsafe.Pointer(&rv) + parms[5] = unsafe.Pointer(&rc) + parms[6] = unsafe.Pointer(&rn) + bpxcall(parms[:], BPX4GTH) + return rv, rc, rn +} +func ZosJobname() (jobname string, err error) { + var pgtha Pgtha + pgtha.Pid = uint32(Getpid()) + pgtha.Accesspid = PGTHA_CURRENT + pgtha.Flag1 = PGTHA_PROCESS + var out [256]byte + var outlen uint32 + outlen = 256 + rv, rc, rn := BpxGetthent(&pgtha, &outlen, unsafe.Pointer(&out[0])) + if rv == 0 { + gthc := []byte{0x87, 0xa3, 0x88, 0x83} // 'gthc' in ebcdic + ix := bytes.Index(out[:], gthc) + if ix == -1 { + err = fmt.Errorf("BPX4GTH: gthc return data not found") + return + } + jn := out[ix+80 : ix+88] // we didn't declare Pgthc, but jobname is 8-byte at offset 80 + E2a(jn) + jobname = string(bytes.TrimRight(jn, " ")) + + } else { + err = fmt.Errorf("BPX4GTH: rc=%d errno=%d reason=code=0x%x", rv, rc, rn) + } + return +} +func Bpx4ptq(code int32, data string) (rv int32, rc int32, rn int32) { + var userdata [8]byte + var parms [5]unsafe.Pointer + copy(userdata[:], data+" ") + A2e(userdata[:]) + parms[0] = unsafe.Pointer(&code) + parms[1] = unsafe.Pointer(&userdata[0]) + parms[2] = unsafe.Pointer(&rv) + parms[3] = unsafe.Pointer(&rc) + parms[4] = unsafe.Pointer(&rn) + bpxcall(parms[:], BPX4PTQ) + return rv, rc, rn +} + +const ( + PT_TRACE_ME = 0 // Debug this process + PT_READ_I = 1 // Read a full word + PT_READ_D = 2 // Read a full word + PT_READ_U = 3 // Read control info + PT_WRITE_I = 4 //Write a full word + PT_WRITE_D = 5 //Write a full word + PT_CONTINUE = 7 //Continue the process + PT_KILL = 8 //Terminate the process + PT_READ_GPR = 11 // Read GPR, CR, PSW + PT_READ_FPR = 12 // Read FPR + PT_READ_VR = 13 // Read VR + PT_WRITE_GPR = 14 // Write GPR, CR, PSW + PT_WRITE_FPR = 15 // Write FPR + PT_WRITE_VR = 16 // Write VR + PT_READ_BLOCK = 17 // Read storage + PT_WRITE_BLOCK = 19 // Write storage + PT_READ_GPRH = 20 // Read GPRH + PT_WRITE_GPRH = 21 // Write GPRH + PT_REGHSET = 22 // Read all GPRHs + PT_ATTACH = 30 // Attach to a process + PT_DETACH = 31 // Detach from a process + PT_REGSET = 32 // Read all GPRs + PT_REATTACH = 33 // Reattach to a process + PT_LDINFO = 34 // Read loader info + PT_MULTI = 35 // Multi process mode + PT_LD64INFO = 36 // RMODE64 Info Area + PT_BLOCKREQ = 40 // Block request + PT_THREAD_INFO = 60 // Read thread info + PT_THREAD_MODIFY = 61 + PT_THREAD_READ_FOCUS = 62 + PT_THREAD_WRITE_FOCUS = 63 + PT_THREAD_HOLD = 64 + PT_THREAD_SIGNAL = 65 + PT_EXPLAIN = 66 + PT_EVENTS = 67 + PT_THREAD_INFO_EXTENDED = 68 + PT_REATTACH2 = 71 + PT_CAPTURE = 72 + PT_UNCAPTURE = 73 + PT_GET_THREAD_TCB = 74 + PT_GET_ALET = 75 + PT_SWAPIN = 76 + PT_EXTENDED_EVENT = 98 + PT_RECOVER = 99 // Debug a program check + PT_GPR0 = 0 // General purpose register 0 + PT_GPR1 = 1 // General purpose register 1 + PT_GPR2 = 2 // General purpose register 2 + PT_GPR3 = 3 // General purpose register 3 + PT_GPR4 = 4 // General purpose register 4 + PT_GPR5 = 5 // General purpose register 5 + PT_GPR6 = 6 // General purpose register 6 + PT_GPR7 = 7 // General purpose register 7 + PT_GPR8 = 8 // General purpose register 8 + PT_GPR9 = 9 // General purpose register 9 + PT_GPR10 = 10 // General purpose register 10 + PT_GPR11 = 11 // General purpose register 11 + PT_GPR12 = 12 // General purpose register 12 + PT_GPR13 = 13 // General purpose register 13 + PT_GPR14 = 14 // General purpose register 14 + PT_GPR15 = 15 // General purpose register 15 + PT_FPR0 = 16 // Floating point register 0 + PT_FPR1 = 17 // Floating point register 1 + PT_FPR2 = 18 // Floating point register 2 + PT_FPR3 = 19 // Floating point register 3 + PT_FPR4 = 20 // Floating point register 4 + PT_FPR5 = 21 // Floating point register 5 + PT_FPR6 = 22 // Floating point register 6 + PT_FPR7 = 23 // Floating point register 7 + PT_FPR8 = 24 // Floating point register 8 + PT_FPR9 = 25 // Floating point register 9 + PT_FPR10 = 26 // Floating point register 10 + PT_FPR11 = 27 // Floating point register 11 + PT_FPR12 = 28 // Floating point register 12 + PT_FPR13 = 29 // Floating point register 13 + PT_FPR14 = 30 // Floating point register 14 + PT_FPR15 = 31 // Floating point register 15 + PT_FPC = 32 // Floating point control register + PT_PSW = 40 // PSW + PT_PSW0 = 40 // Left half of the PSW + PT_PSW1 = 41 // Right half of the PSW + PT_CR0 = 42 // Control register 0 + PT_CR1 = 43 // Control register 1 + PT_CR2 = 44 // Control register 2 + PT_CR3 = 45 // Control register 3 + PT_CR4 = 46 // Control register 4 + PT_CR5 = 47 // Control register 5 + PT_CR6 = 48 // Control register 6 + PT_CR7 = 49 // Control register 7 + PT_CR8 = 50 // Control register 8 + PT_CR9 = 51 // Control register 9 + PT_CR10 = 52 // Control register 10 + PT_CR11 = 53 // Control register 11 + PT_CR12 = 54 // Control register 12 + PT_CR13 = 55 // Control register 13 + PT_CR14 = 56 // Control register 14 + PT_CR15 = 57 // Control register 15 + PT_GPRH0 = 58 // GP High register 0 + PT_GPRH1 = 59 // GP High register 1 + PT_GPRH2 = 60 // GP High register 2 + PT_GPRH3 = 61 // GP High register 3 + PT_GPRH4 = 62 // GP High register 4 + PT_GPRH5 = 63 // GP High register 5 + PT_GPRH6 = 64 // GP High register 6 + PT_GPRH7 = 65 // GP High register 7 + PT_GPRH8 = 66 // GP High register 8 + PT_GPRH9 = 67 // GP High register 9 + PT_GPRH10 = 68 // GP High register 10 + PT_GPRH11 = 69 // GP High register 11 + PT_GPRH12 = 70 // GP High register 12 + PT_GPRH13 = 71 // GP High register 13 + PT_GPRH14 = 72 // GP High register 14 + PT_GPRH15 = 73 // GP High register 15 + PT_VR0 = 74 // Vector register 0 + PT_VR1 = 75 // Vector register 1 + PT_VR2 = 76 // Vector register 2 + PT_VR3 = 77 // Vector register 3 + PT_VR4 = 78 // Vector register 4 + PT_VR5 = 79 // Vector register 5 + PT_VR6 = 80 // Vector register 6 + PT_VR7 = 81 // Vector register 7 + PT_VR8 = 82 // Vector register 8 + PT_VR9 = 83 // Vector register 9 + PT_VR10 = 84 // Vector register 10 + PT_VR11 = 85 // Vector register 11 + PT_VR12 = 86 // Vector register 12 + PT_VR13 = 87 // Vector register 13 + PT_VR14 = 88 // Vector register 14 + PT_VR15 = 89 // Vector register 15 + PT_VR16 = 90 // Vector register 16 + PT_VR17 = 91 // Vector register 17 + PT_VR18 = 92 // Vector register 18 + PT_VR19 = 93 // Vector register 19 + PT_VR20 = 94 // Vector register 20 + PT_VR21 = 95 // Vector register 21 + PT_VR22 = 96 // Vector register 22 + PT_VR23 = 97 // Vector register 23 + PT_VR24 = 98 // Vector register 24 + PT_VR25 = 99 // Vector register 25 + PT_VR26 = 100 // Vector register 26 + PT_VR27 = 101 // Vector register 27 + PT_VR28 = 102 // Vector register 28 + PT_VR29 = 103 // Vector register 29 + PT_VR30 = 104 // Vector register 30 + PT_VR31 = 105 // Vector register 31 + PT_PSWG = 106 // PSWG + PT_PSWG0 = 106 // Bytes 0-3 + PT_PSWG1 = 107 // Bytes 4-7 + PT_PSWG2 = 108 // Bytes 8-11 (IA high word) + PT_PSWG3 = 109 // Bytes 12-15 (IA low word) +) + +func Bpx4ptr(request int32, pid int32, addr unsafe.Pointer, data unsafe.Pointer, buffer unsafe.Pointer) (rv int32, rc int32, rn int32) { + var parms [8]unsafe.Pointer + parms[0] = unsafe.Pointer(&request) + parms[1] = unsafe.Pointer(&pid) + parms[2] = unsafe.Pointer(&addr) + parms[3] = unsafe.Pointer(&data) + parms[4] = unsafe.Pointer(&buffer) + parms[5] = unsafe.Pointer(&rv) + parms[6] = unsafe.Pointer(&rc) + parms[7] = unsafe.Pointer(&rn) + bpxcall(parms[:], BPX4PTR) + return rv, rc, rn +} + +func copyU8(val uint8, dest []uint8) int { + if len(dest) < 1 { + return 0 + } + dest[0] = val + return 1 +} + +func copyU8Arr(src, dest []uint8) int { + if len(dest) < len(src) { + return 0 + } + for i, v := range src { + dest[i] = v + } + return len(src) +} + +func copyU16(val uint16, dest []uint16) int { + if len(dest) < 1 { + return 0 + } + dest[0] = val + return 1 +} + +func copyU32(val uint32, dest []uint32) int { + if len(dest) < 1 { + return 0 + } + dest[0] = val + return 1 +} + +func copyU32Arr(src, dest []uint32) int { + if len(dest) < len(src) { + return 0 + } + for i, v := range src { + dest[i] = v + } + return len(src) +} + +func copyU64(val uint64, dest []uint64) int { + if len(dest) < 1 { + return 0 + } + dest[0] = val + return 1 +} diff --git a/vendor/golang.org/x/sys/unix/bpxsvc_zos.s b/vendor/golang.org/x/sys/unix/bpxsvc_zos.s new file mode 100644 index 000000000..4bd4a1798 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/bpxsvc_zos.s @@ -0,0 +1,192 @@ +// Copyright 2024 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +#include "go_asm.h" +#include "textflag.h" + +// function to call USS assembly language services +// +// doc: https://www.ibm.com/support/knowledgecenter/en/SSLTBW_3.1.0/com.ibm.zos.v3r1.bpxb100/bit64env.htm +// +// arg1 unsafe.Pointer array that ressembles an OS PLIST +// +// arg2 function offset as in +// doc: https://www.ibm.com/support/knowledgecenter/en/SSLTBW_3.1.0/com.ibm.zos.v3r1.bpxb100/bpx2cr_List_of_offsets.htm +// +// func bpxcall(plist []unsafe.Pointer, bpx_offset int64) + +TEXT ·bpxcall(SB), NOSPLIT|NOFRAME, $0 + MOVD plist_base+0(FP), R1 // r1 points to plist + MOVD bpx_offset+24(FP), R2 // r2 offset to BPX vector table + MOVD R14, R7 // save r14 + MOVD R15, R8 // save r15 + MOVWZ 16(R0), R9 + MOVWZ 544(R9), R9 + MOVWZ 24(R9), R9 // call vector in r9 + ADD R2, R9 // add offset to vector table + MOVWZ (R9), R9 // r9 points to entry point + BYTE $0x0D // BL R14,R9 --> basr r14,r9 + BYTE $0xE9 // clobbers 0,1,14,15 + MOVD R8, R15 // restore 15 + JMP R7 // return via saved return address + +// func A2e(arr [] byte) +// code page conversion from 819 to 1047 +TEXT ·A2e(SB), NOSPLIT|NOFRAME, $0 + MOVD arg_base+0(FP), R2 // pointer to arry of characters + MOVD arg_len+8(FP), R3 // count + XOR R0, R0 + XOR R1, R1 + BYTE $0xA7; BYTE $0x15; BYTE $0x00; BYTE $0x82 // BRAS 1,(2+(256/2)) + + // ASCII -> EBCDIC conversion table: + BYTE $0x00; BYTE $0x01; BYTE $0x02; BYTE $0x03 + BYTE $0x37; BYTE $0x2d; BYTE $0x2e; BYTE $0x2f + BYTE $0x16; BYTE $0x05; BYTE $0x15; BYTE $0x0b + BYTE $0x0c; BYTE $0x0d; BYTE $0x0e; BYTE $0x0f + BYTE $0x10; BYTE $0x11; BYTE $0x12; BYTE $0x13 + BYTE $0x3c; BYTE $0x3d; BYTE $0x32; BYTE $0x26 + BYTE $0x18; BYTE $0x19; BYTE $0x3f; BYTE $0x27 + BYTE $0x1c; BYTE $0x1d; BYTE $0x1e; BYTE $0x1f + BYTE $0x40; BYTE $0x5a; BYTE $0x7f; BYTE $0x7b + BYTE $0x5b; BYTE $0x6c; BYTE $0x50; BYTE $0x7d + BYTE $0x4d; BYTE $0x5d; BYTE $0x5c; BYTE $0x4e + BYTE $0x6b; BYTE $0x60; BYTE $0x4b; BYTE $0x61 + BYTE $0xf0; BYTE $0xf1; BYTE $0xf2; BYTE $0xf3 + BYTE $0xf4; BYTE $0xf5; BYTE $0xf6; BYTE $0xf7 + BYTE $0xf8; BYTE $0xf9; BYTE $0x7a; BYTE $0x5e + BYTE $0x4c; BYTE $0x7e; BYTE $0x6e; BYTE $0x6f + BYTE $0x7c; BYTE $0xc1; BYTE $0xc2; BYTE $0xc3 + BYTE $0xc4; BYTE $0xc5; BYTE $0xc6; BYTE $0xc7 + BYTE $0xc8; BYTE $0xc9; BYTE $0xd1; BYTE $0xd2 + BYTE $0xd3; BYTE $0xd4; BYTE $0xd5; BYTE $0xd6 + BYTE $0xd7; BYTE $0xd8; BYTE $0xd9; BYTE $0xe2 + BYTE $0xe3; BYTE $0xe4; BYTE $0xe5; BYTE $0xe6 + BYTE $0xe7; BYTE $0xe8; BYTE $0xe9; BYTE $0xad + BYTE $0xe0; BYTE $0xbd; BYTE $0x5f; BYTE $0x6d + BYTE $0x79; BYTE $0x81; BYTE $0x82; BYTE $0x83 + BYTE $0x84; BYTE $0x85; BYTE $0x86; BYTE $0x87 + BYTE $0x88; BYTE $0x89; BYTE $0x91; BYTE $0x92 + BYTE $0x93; BYTE $0x94; BYTE $0x95; BYTE $0x96 + BYTE $0x97; BYTE $0x98; BYTE $0x99; BYTE $0xa2 + BYTE $0xa3; BYTE $0xa4; BYTE $0xa5; BYTE $0xa6 + BYTE $0xa7; BYTE $0xa8; BYTE $0xa9; BYTE $0xc0 + BYTE $0x4f; BYTE $0xd0; BYTE $0xa1; BYTE $0x07 + BYTE $0x20; BYTE $0x21; BYTE $0x22; BYTE $0x23 + BYTE $0x24; BYTE $0x25; BYTE $0x06; BYTE $0x17 + BYTE $0x28; BYTE $0x29; BYTE $0x2a; BYTE $0x2b + BYTE $0x2c; BYTE $0x09; BYTE $0x0a; BYTE $0x1b + BYTE $0x30; BYTE $0x31; BYTE $0x1a; BYTE $0x33 + BYTE $0x34; BYTE $0x35; BYTE $0x36; BYTE $0x08 + BYTE $0x38; BYTE $0x39; BYTE $0x3a; BYTE $0x3b + BYTE $0x04; BYTE $0x14; BYTE $0x3e; BYTE $0xff + BYTE $0x41; BYTE $0xaa; BYTE $0x4a; BYTE $0xb1 + BYTE $0x9f; BYTE $0xb2; BYTE $0x6a; BYTE $0xb5 + BYTE $0xbb; BYTE $0xb4; BYTE $0x9a; BYTE $0x8a + BYTE $0xb0; BYTE $0xca; BYTE $0xaf; BYTE $0xbc + BYTE $0x90; BYTE $0x8f; BYTE $0xea; BYTE $0xfa + BYTE $0xbe; BYTE $0xa0; BYTE $0xb6; BYTE $0xb3 + BYTE $0x9d; BYTE $0xda; BYTE $0x9b; BYTE $0x8b + BYTE $0xb7; BYTE $0xb8; BYTE $0xb9; BYTE $0xab + BYTE $0x64; BYTE $0x65; BYTE $0x62; BYTE $0x66 + BYTE $0x63; BYTE $0x67; BYTE $0x9e; BYTE $0x68 + BYTE $0x74; BYTE $0x71; BYTE $0x72; BYTE $0x73 + BYTE $0x78; BYTE $0x75; BYTE $0x76; BYTE $0x77 + BYTE $0xac; BYTE $0x69; BYTE $0xed; BYTE $0xee + BYTE $0xeb; BYTE $0xef; BYTE $0xec; BYTE $0xbf + BYTE $0x80; BYTE $0xfd; BYTE $0xfe; BYTE $0xfb + BYTE $0xfc; BYTE $0xba; BYTE $0xae; BYTE $0x59 + BYTE $0x44; BYTE $0x45; BYTE $0x42; BYTE $0x46 + BYTE $0x43; BYTE $0x47; BYTE $0x9c; BYTE $0x48 + BYTE $0x54; BYTE $0x51; BYTE $0x52; BYTE $0x53 + BYTE $0x58; BYTE $0x55; BYTE $0x56; BYTE $0x57 + BYTE $0x8c; BYTE $0x49; BYTE $0xcd; BYTE $0xce + BYTE $0xcb; BYTE $0xcf; BYTE $0xcc; BYTE $0xe1 + BYTE $0x70; BYTE $0xdd; BYTE $0xde; BYTE $0xdb + BYTE $0xdc; BYTE $0x8d; BYTE $0x8e; BYTE $0xdf + +retry: + WORD $0xB9931022 // TROO 2,2,b'0001' + BVS retry + RET + +// func e2a(arr [] byte) +// code page conversion from 1047 to 819 +TEXT ·E2a(SB), NOSPLIT|NOFRAME, $0 + MOVD arg_base+0(FP), R2 // pointer to arry of characters + MOVD arg_len+8(FP), R3 // count + XOR R0, R0 + XOR R1, R1 + BYTE $0xA7; BYTE $0x15; BYTE $0x00; BYTE $0x82 // BRAS 1,(2+(256/2)) + + // EBCDIC -> ASCII conversion table: + BYTE $0x00; BYTE $0x01; BYTE $0x02; BYTE $0x03 + BYTE $0x9c; BYTE $0x09; BYTE $0x86; BYTE $0x7f + BYTE $0x97; BYTE $0x8d; BYTE $0x8e; BYTE $0x0b + BYTE $0x0c; BYTE $0x0d; BYTE $0x0e; BYTE $0x0f + BYTE $0x10; BYTE $0x11; BYTE $0x12; BYTE $0x13 + BYTE $0x9d; BYTE $0x0a; BYTE $0x08; BYTE $0x87 + BYTE $0x18; BYTE $0x19; BYTE $0x92; BYTE $0x8f + BYTE $0x1c; BYTE $0x1d; BYTE $0x1e; BYTE $0x1f + BYTE $0x80; BYTE $0x81; BYTE $0x82; BYTE $0x83 + BYTE $0x84; BYTE $0x85; BYTE $0x17; BYTE $0x1b + BYTE $0x88; BYTE $0x89; BYTE $0x8a; BYTE $0x8b + BYTE $0x8c; BYTE $0x05; BYTE $0x06; BYTE $0x07 + BYTE $0x90; BYTE $0x91; BYTE $0x16; BYTE $0x93 + BYTE $0x94; BYTE $0x95; BYTE $0x96; BYTE $0x04 + BYTE $0x98; BYTE $0x99; BYTE $0x9a; BYTE $0x9b + BYTE $0x14; BYTE $0x15; BYTE $0x9e; BYTE $0x1a + BYTE $0x20; BYTE $0xa0; BYTE $0xe2; BYTE $0xe4 + BYTE $0xe0; BYTE $0xe1; BYTE $0xe3; BYTE $0xe5 + BYTE $0xe7; BYTE $0xf1; BYTE $0xa2; BYTE $0x2e + BYTE $0x3c; BYTE $0x28; BYTE $0x2b; BYTE $0x7c + BYTE $0x26; BYTE $0xe9; BYTE $0xea; BYTE $0xeb + BYTE $0xe8; BYTE $0xed; BYTE $0xee; BYTE $0xef + BYTE $0xec; BYTE $0xdf; BYTE $0x21; BYTE $0x24 + BYTE $0x2a; BYTE $0x29; BYTE $0x3b; BYTE $0x5e + BYTE $0x2d; BYTE $0x2f; BYTE $0xc2; BYTE $0xc4 + BYTE $0xc0; BYTE $0xc1; BYTE $0xc3; BYTE $0xc5 + BYTE $0xc7; BYTE $0xd1; BYTE $0xa6; BYTE $0x2c + BYTE $0x25; BYTE $0x5f; BYTE $0x3e; BYTE $0x3f + BYTE $0xf8; BYTE $0xc9; BYTE $0xca; BYTE $0xcb + BYTE $0xc8; BYTE $0xcd; BYTE $0xce; BYTE $0xcf + BYTE $0xcc; BYTE $0x60; BYTE $0x3a; BYTE $0x23 + BYTE $0x40; BYTE $0x27; BYTE $0x3d; BYTE $0x22 + BYTE $0xd8; BYTE $0x61; BYTE $0x62; BYTE $0x63 + BYTE $0x64; BYTE $0x65; BYTE $0x66; BYTE $0x67 + BYTE $0x68; BYTE $0x69; BYTE $0xab; BYTE $0xbb + BYTE $0xf0; BYTE $0xfd; BYTE $0xfe; BYTE $0xb1 + BYTE $0xb0; BYTE $0x6a; BYTE $0x6b; BYTE $0x6c + BYTE $0x6d; BYTE $0x6e; BYTE $0x6f; BYTE $0x70 + BYTE $0x71; BYTE $0x72; BYTE $0xaa; BYTE $0xba + BYTE $0xe6; BYTE $0xb8; BYTE $0xc6; BYTE $0xa4 + BYTE $0xb5; BYTE $0x7e; BYTE $0x73; BYTE $0x74 + BYTE $0x75; BYTE $0x76; BYTE $0x77; BYTE $0x78 + BYTE $0x79; BYTE $0x7a; BYTE $0xa1; BYTE $0xbf + BYTE $0xd0; BYTE $0x5b; BYTE $0xde; BYTE $0xae + BYTE $0xac; BYTE $0xa3; BYTE $0xa5; BYTE $0xb7 + BYTE $0xa9; BYTE $0xa7; BYTE $0xb6; BYTE $0xbc + BYTE $0xbd; BYTE $0xbe; BYTE $0xdd; BYTE $0xa8 + BYTE $0xaf; BYTE $0x5d; BYTE $0xb4; BYTE $0xd7 + BYTE $0x7b; BYTE $0x41; BYTE $0x42; BYTE $0x43 + BYTE $0x44; BYTE $0x45; BYTE $0x46; BYTE $0x47 + BYTE $0x48; BYTE $0x49; BYTE $0xad; BYTE $0xf4 + BYTE $0xf6; BYTE $0xf2; BYTE $0xf3; BYTE $0xf5 + BYTE $0x7d; BYTE $0x4a; BYTE $0x4b; BYTE $0x4c + BYTE $0x4d; BYTE $0x4e; BYTE $0x4f; BYTE $0x50 + BYTE $0x51; BYTE $0x52; BYTE $0xb9; BYTE $0xfb + BYTE $0xfc; BYTE $0xf9; BYTE $0xfa; BYTE $0xff + BYTE $0x5c; BYTE $0xf7; BYTE $0x53; BYTE $0x54 + BYTE $0x55; BYTE $0x56; BYTE $0x57; BYTE $0x58 + BYTE $0x59; BYTE $0x5a; BYTE $0xb2; BYTE $0xd4 + BYTE $0xd6; BYTE $0xd2; BYTE $0xd3; BYTE $0xd5 + BYTE $0x30; BYTE $0x31; BYTE $0x32; BYTE $0x33 + BYTE $0x34; BYTE $0x35; BYTE $0x36; BYTE $0x37 + BYTE $0x38; BYTE $0x39; BYTE $0xb3; BYTE $0xdb + BYTE $0xdc; BYTE $0xd9; BYTE $0xda; BYTE $0x9f + +retry: + WORD $0xB9931022 // TROO 2,2,b'0001' + BVS retry + RET diff --git a/vendor/golang.org/x/sys/unix/epoll_zos.go b/vendor/golang.org/x/sys/unix/epoll_zos.go deleted file mode 100644 index 7753fddea..000000000 --- a/vendor/golang.org/x/sys/unix/epoll_zos.go +++ /dev/null @@ -1,220 +0,0 @@ -// Copyright 2020 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -//go:build zos && s390x - -package unix - -import ( - "sync" -) - -// This file simulates epoll on z/OS using poll. - -// Analogous to epoll_event on Linux. -// TODO(neeilan): Pad is because the Linux kernel expects a 96-bit struct. We never pass this to the kernel; remove? -type EpollEvent struct { - Events uint32 - Fd int32 - Pad int32 -} - -const ( - EPOLLERR = 0x8 - EPOLLHUP = 0x10 - EPOLLIN = 0x1 - EPOLLMSG = 0x400 - EPOLLOUT = 0x4 - EPOLLPRI = 0x2 - EPOLLRDBAND = 0x80 - EPOLLRDNORM = 0x40 - EPOLLWRBAND = 0x200 - EPOLLWRNORM = 0x100 - EPOLL_CTL_ADD = 0x1 - EPOLL_CTL_DEL = 0x2 - EPOLL_CTL_MOD = 0x3 - // The following constants are part of the epoll API, but represent - // currently unsupported functionality on z/OS. - // EPOLL_CLOEXEC = 0x80000 - // EPOLLET = 0x80000000 - // EPOLLONESHOT = 0x40000000 - // EPOLLRDHUP = 0x2000 // Typically used with edge-triggered notis - // EPOLLEXCLUSIVE = 0x10000000 // Exclusive wake-up mode - // EPOLLWAKEUP = 0x20000000 // Relies on Linux's BLOCK_SUSPEND capability -) - -// TODO(neeilan): We can eliminate these epToPoll / pToEpoll calls by using identical mask values for POLL/EPOLL -// constants where possible The lower 16 bits of epoll events (uint32) can fit any system poll event (int16). - -// epToPollEvt converts epoll event field to poll equivalent. -// In epoll, Events is a 32-bit field, while poll uses 16 bits. -func epToPollEvt(events uint32) int16 { - var ep2p = map[uint32]int16{ - EPOLLIN: POLLIN, - EPOLLOUT: POLLOUT, - EPOLLHUP: POLLHUP, - EPOLLPRI: POLLPRI, - EPOLLERR: POLLERR, - } - - var pollEvts int16 = 0 - for epEvt, pEvt := range ep2p { - if (events & epEvt) != 0 { - pollEvts |= pEvt - } - } - - return pollEvts -} - -// pToEpollEvt converts 16 bit poll event bitfields to 32-bit epoll event fields. -func pToEpollEvt(revents int16) uint32 { - var p2ep = map[int16]uint32{ - POLLIN: EPOLLIN, - POLLOUT: EPOLLOUT, - POLLHUP: EPOLLHUP, - POLLPRI: EPOLLPRI, - POLLERR: EPOLLERR, - } - - var epollEvts uint32 = 0 - for pEvt, epEvt := range p2ep { - if (revents & pEvt) != 0 { - epollEvts |= epEvt - } - } - - return epollEvts -} - -// Per-process epoll implementation. -type epollImpl struct { - mu sync.Mutex - epfd2ep map[int]*eventPoll - nextEpfd int -} - -// eventPoll holds a set of file descriptors being watched by the process. A process can have multiple epoll instances. -// On Linux, this is an in-kernel data structure accessed through a fd. -type eventPoll struct { - mu sync.Mutex - fds map[int]*EpollEvent -} - -// epoll impl for this process. -var impl epollImpl = epollImpl{ - epfd2ep: make(map[int]*eventPoll), - nextEpfd: 0, -} - -func (e *epollImpl) epollcreate(size int) (epfd int, err error) { - e.mu.Lock() - defer e.mu.Unlock() - epfd = e.nextEpfd - e.nextEpfd++ - - e.epfd2ep[epfd] = &eventPoll{ - fds: make(map[int]*EpollEvent), - } - return epfd, nil -} - -func (e *epollImpl) epollcreate1(flag int) (fd int, err error) { - return e.epollcreate(4) -} - -func (e *epollImpl) epollctl(epfd int, op int, fd int, event *EpollEvent) (err error) { - e.mu.Lock() - defer e.mu.Unlock() - - ep, ok := e.epfd2ep[epfd] - if !ok { - - return EBADF - } - - switch op { - case EPOLL_CTL_ADD: - // TODO(neeilan): When we make epfds and fds disjoint, detect epoll - // loops here (instances watching each other) and return ELOOP. - if _, ok := ep.fds[fd]; ok { - return EEXIST - } - ep.fds[fd] = event - case EPOLL_CTL_MOD: - if _, ok := ep.fds[fd]; !ok { - return ENOENT - } - ep.fds[fd] = event - case EPOLL_CTL_DEL: - if _, ok := ep.fds[fd]; !ok { - return ENOENT - } - delete(ep.fds, fd) - - } - return nil -} - -// Must be called while holding ep.mu -func (ep *eventPoll) getFds() []int { - fds := make([]int, len(ep.fds)) - for fd := range ep.fds { - fds = append(fds, fd) - } - return fds -} - -func (e *epollImpl) epollwait(epfd int, events []EpollEvent, msec int) (n int, err error) { - e.mu.Lock() // in [rare] case of concurrent epollcreate + epollwait - ep, ok := e.epfd2ep[epfd] - - if !ok { - e.mu.Unlock() - return 0, EBADF - } - - pollfds := make([]PollFd, 4) - for fd, epollevt := range ep.fds { - pollfds = append(pollfds, PollFd{Fd: int32(fd), Events: epToPollEvt(epollevt.Events)}) - } - e.mu.Unlock() - - n, err = Poll(pollfds, msec) - if err != nil { - return n, err - } - - i := 0 - for _, pFd := range pollfds { - if pFd.Revents != 0 { - events[i] = EpollEvent{Fd: pFd.Fd, Events: pToEpollEvt(pFd.Revents)} - i++ - } - - if i == n { - break - } - } - - return n, nil -} - -func EpollCreate(size int) (fd int, err error) { - return impl.epollcreate(size) -} - -func EpollCreate1(flag int) (fd int, err error) { - return impl.epollcreate1(flag) -} - -func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) { - return impl.epollctl(epfd, op, fd, event) -} - -// Because EpollWait mutates events, the caller is expected to coordinate -// concurrent access if calling with the same epfd from multiple goroutines. -func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { - return impl.epollwait(epfd, events, msec) -} diff --git a/vendor/golang.org/x/sys/unix/fstatfs_zos.go b/vendor/golang.org/x/sys/unix/fstatfs_zos.go deleted file mode 100644 index c8bde601e..000000000 --- a/vendor/golang.org/x/sys/unix/fstatfs_zos.go +++ /dev/null @@ -1,163 +0,0 @@ -// Copyright 2020 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -//go:build zos && s390x - -package unix - -import ( - "unsafe" -) - -// This file simulates fstatfs on z/OS using fstatvfs and w_getmntent. - -func Fstatfs(fd int, stat *Statfs_t) (err error) { - var stat_v Statvfs_t - err = Fstatvfs(fd, &stat_v) - if err == nil { - // populate stat - stat.Type = 0 - stat.Bsize = stat_v.Bsize - stat.Blocks = stat_v.Blocks - stat.Bfree = stat_v.Bfree - stat.Bavail = stat_v.Bavail - stat.Files = stat_v.Files - stat.Ffree = stat_v.Ffree - stat.Fsid = stat_v.Fsid - stat.Namelen = stat_v.Namemax - stat.Frsize = stat_v.Frsize - stat.Flags = stat_v.Flag - for passn := 0; passn < 5; passn++ { - switch passn { - case 0: - err = tryGetmntent64(stat) - break - case 1: - err = tryGetmntent128(stat) - break - case 2: - err = tryGetmntent256(stat) - break - case 3: - err = tryGetmntent512(stat) - break - case 4: - err = tryGetmntent1024(stat) - break - default: - break - } - //proceed to return if: err is nil (found), err is nonnil but not ERANGE (another error occurred) - if err == nil || err != nil && err != ERANGE { - break - } - } - } - return err -} - -func tryGetmntent64(stat *Statfs_t) (err error) { - var mnt_ent_buffer struct { - header W_Mnth - filesys_info [64]W_Mntent - } - var buffer_size int = int(unsafe.Sizeof(mnt_ent_buffer)) - fs_count, err := W_Getmntent((*byte)(unsafe.Pointer(&mnt_ent_buffer)), buffer_size) - if err != nil { - return err - } - err = ERANGE //return ERANGE if no match is found in this batch - for i := 0; i < fs_count; i++ { - if stat.Fsid == uint64(mnt_ent_buffer.filesys_info[i].Dev) { - stat.Type = uint32(mnt_ent_buffer.filesys_info[i].Fstname[0]) - err = nil - break - } - } - return err -} - -func tryGetmntent128(stat *Statfs_t) (err error) { - var mnt_ent_buffer struct { - header W_Mnth - filesys_info [128]W_Mntent - } - var buffer_size int = int(unsafe.Sizeof(mnt_ent_buffer)) - fs_count, err := W_Getmntent((*byte)(unsafe.Pointer(&mnt_ent_buffer)), buffer_size) - if err != nil { - return err - } - err = ERANGE //return ERANGE if no match is found in this batch - for i := 0; i < fs_count; i++ { - if stat.Fsid == uint64(mnt_ent_buffer.filesys_info[i].Dev) { - stat.Type = uint32(mnt_ent_buffer.filesys_info[i].Fstname[0]) - err = nil - break - } - } - return err -} - -func tryGetmntent256(stat *Statfs_t) (err error) { - var mnt_ent_buffer struct { - header W_Mnth - filesys_info [256]W_Mntent - } - var buffer_size int = int(unsafe.Sizeof(mnt_ent_buffer)) - fs_count, err := W_Getmntent((*byte)(unsafe.Pointer(&mnt_ent_buffer)), buffer_size) - if err != nil { - return err - } - err = ERANGE //return ERANGE if no match is found in this batch - for i := 0; i < fs_count; i++ { - if stat.Fsid == uint64(mnt_ent_buffer.filesys_info[i].Dev) { - stat.Type = uint32(mnt_ent_buffer.filesys_info[i].Fstname[0]) - err = nil - break - } - } - return err -} - -func tryGetmntent512(stat *Statfs_t) (err error) { - var mnt_ent_buffer struct { - header W_Mnth - filesys_info [512]W_Mntent - } - var buffer_size int = int(unsafe.Sizeof(mnt_ent_buffer)) - fs_count, err := W_Getmntent((*byte)(unsafe.Pointer(&mnt_ent_buffer)), buffer_size) - if err != nil { - return err - } - err = ERANGE //return ERANGE if no match is found in this batch - for i := 0; i < fs_count; i++ { - if stat.Fsid == uint64(mnt_ent_buffer.filesys_info[i].Dev) { - stat.Type = uint32(mnt_ent_buffer.filesys_info[i].Fstname[0]) - err = nil - break - } - } - return err -} - -func tryGetmntent1024(stat *Statfs_t) (err error) { - var mnt_ent_buffer struct { - header W_Mnth - filesys_info [1024]W_Mntent - } - var buffer_size int = int(unsafe.Sizeof(mnt_ent_buffer)) - fs_count, err := W_Getmntent((*byte)(unsafe.Pointer(&mnt_ent_buffer)), buffer_size) - if err != nil { - return err - } - err = ERANGE //return ERANGE if no match is found in this batch - for i := 0; i < fs_count; i++ { - if stat.Fsid == uint64(mnt_ent_buffer.filesys_info[i].Dev) { - stat.Type = uint32(mnt_ent_buffer.filesys_info[i].Fstname[0]) - err = nil - break - } - } - return err -} diff --git a/vendor/golang.org/x/sys/unix/mkerrors.sh b/vendor/golang.org/x/sys/unix/mkerrors.sh index fdcaa974d..4ed2e488b 100644 --- a/vendor/golang.org/x/sys/unix/mkerrors.sh +++ b/vendor/golang.org/x/sys/unix/mkerrors.sh @@ -263,6 +263,7 @@ struct ltchars { #include #include #include +#include #include #include #include @@ -549,6 +550,7 @@ ccflags="$@" $2 !~ "NLA_TYPE_MASK" && $2 !~ /^RTC_VL_(ACCURACY|BACKUP|DATA)/ && $2 ~ /^(NETLINK|NLM|NLMSG|NLA|IFA|IFAN|RT|RTC|RTCF|RTN|RTPROT|RTNH|ARPHRD|ETH_P|NETNSA)_/ || + $2 ~ /^SOCK_|SK_DIAG_|SKNLGRP_$/ || $2 ~ /^FIORDCHK$/ || $2 ~ /^SIOC/ || $2 ~ /^TIOC/ || diff --git a/vendor/golang.org/x/sys/unix/mmap_nomremap.go b/vendor/golang.org/x/sys/unix/mmap_nomremap.go index 4b68e5978..7f602ffd2 100644 --- a/vendor/golang.org/x/sys/unix/mmap_nomremap.go +++ b/vendor/golang.org/x/sys/unix/mmap_nomremap.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -//go:build aix || darwin || dragonfly || freebsd || openbsd || solaris +//go:build aix || darwin || dragonfly || freebsd || openbsd || solaris || zos package unix diff --git a/vendor/golang.org/x/sys/unix/pagesize_unix.go b/vendor/golang.org/x/sys/unix/pagesize_unix.go index 4d0a3430e..0482408d7 100644 --- a/vendor/golang.org/x/sys/unix/pagesize_unix.go +++ b/vendor/golang.org/x/sys/unix/pagesize_unix.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris +//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos // For Unix, get the pagesize from the runtime. diff --git a/vendor/golang.org/x/sys/unix/readdirent_getdirentries.go b/vendor/golang.org/x/sys/unix/readdirent_getdirentries.go index 130398b6b..b903c0060 100644 --- a/vendor/golang.org/x/sys/unix/readdirent_getdirentries.go +++ b/vendor/golang.org/x/sys/unix/readdirent_getdirentries.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -//go:build darwin +//go:build darwin || zos package unix diff --git a/vendor/golang.org/x/sys/unix/sockcmsg_zos.go b/vendor/golang.org/x/sys/unix/sockcmsg_zos.go new file mode 100644 index 000000000..3e53dbc02 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/sockcmsg_zos.go @@ -0,0 +1,58 @@ +// Copyright 2024 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Socket control messages + +package unix + +import "unsafe" + +// UnixCredentials encodes credentials into a socket control message +// for sending to another process. This can be used for +// authentication. +func UnixCredentials(ucred *Ucred) []byte { + b := make([]byte, CmsgSpace(SizeofUcred)) + h := (*Cmsghdr)(unsafe.Pointer(&b[0])) + h.Level = SOL_SOCKET + h.Type = SCM_CREDENTIALS + h.SetLen(CmsgLen(SizeofUcred)) + *(*Ucred)(h.data(0)) = *ucred + return b +} + +// ParseUnixCredentials decodes a socket control message that contains +// credentials in a Ucred structure. To receive such a message, the +// SO_PASSCRED option must be enabled on the socket. +func ParseUnixCredentials(m *SocketControlMessage) (*Ucred, error) { + if m.Header.Level != SOL_SOCKET { + return nil, EINVAL + } + if m.Header.Type != SCM_CREDENTIALS { + return nil, EINVAL + } + ucred := *(*Ucred)(unsafe.Pointer(&m.Data[0])) + return &ucred, nil +} + +// PktInfo4 encodes Inet4Pktinfo into a socket control message of type IP_PKTINFO. +func PktInfo4(info *Inet4Pktinfo) []byte { + b := make([]byte, CmsgSpace(SizeofInet4Pktinfo)) + h := (*Cmsghdr)(unsafe.Pointer(&b[0])) + h.Level = SOL_IP + h.Type = IP_PKTINFO + h.SetLen(CmsgLen(SizeofInet4Pktinfo)) + *(*Inet4Pktinfo)(h.data(0)) = *info + return b +} + +// PktInfo6 encodes Inet6Pktinfo into a socket control message of type IPV6_PKTINFO. +func PktInfo6(info *Inet6Pktinfo) []byte { + b := make([]byte, CmsgSpace(SizeofInet6Pktinfo)) + h := (*Cmsghdr)(unsafe.Pointer(&b[0])) + h.Level = SOL_IPV6 + h.Type = IPV6_PKTINFO + h.SetLen(CmsgLen(SizeofInet6Pktinfo)) + *(*Inet6Pktinfo)(h.data(0)) = *info + return b +} diff --git a/vendor/golang.org/x/sys/unix/symaddr_zos_s390x.s b/vendor/golang.org/x/sys/unix/symaddr_zos_s390x.s new file mode 100644 index 000000000..3c4f33cb6 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/symaddr_zos_s390x.s @@ -0,0 +1,75 @@ +// Copyright 2024 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build zos && s390x && gc + +#include "textflag.h" + +// provide the address of function variable to be fixed up. + +TEXT ·getPipe2Addr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Pipe2(SB), R8 + MOVD R8, ret+0(FP) + RET + +TEXT ·get_FlockAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Flock(SB), R8 + MOVD R8, ret+0(FP) + RET + +TEXT ·get_GetxattrAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Getxattr(SB), R8 + MOVD R8, ret+0(FP) + RET + +TEXT ·get_NanosleepAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Nanosleep(SB), R8 + MOVD R8, ret+0(FP) + RET + +TEXT ·get_SetxattrAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Setxattr(SB), R8 + MOVD R8, ret+0(FP) + RET + +TEXT ·get_Wait4Addr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Wait4(SB), R8 + MOVD R8, ret+0(FP) + RET + +TEXT ·get_MountAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Mount(SB), R8 + MOVD R8, ret+0(FP) + RET + +TEXT ·get_UnmountAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Unmount(SB), R8 + MOVD R8, ret+0(FP) + RET + +TEXT ·get_UtimesNanoAtAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·UtimesNanoAt(SB), R8 + MOVD R8, ret+0(FP) + RET + +TEXT ·get_UtimesNanoAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·UtimesNano(SB), R8 + MOVD R8, ret+0(FP) + RET + +TEXT ·get_MkfifoatAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Mkfifoat(SB), R8 + MOVD R8, ret+0(FP) + RET + +TEXT ·get_ChtagAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Chtag(SB), R8 + MOVD R8, ret+0(FP) + RET + +TEXT ·get_ReadlinkatAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Readlinkat(SB), R8 + MOVD R8, ret+0(FP) + RET + diff --git a/vendor/golang.org/x/sys/unix/syscall_zos_s390x.go b/vendor/golang.org/x/sys/unix/syscall_zos_s390x.go index b473038c6..312ae6ac1 100644 --- a/vendor/golang.org/x/sys/unix/syscall_zos_s390x.go +++ b/vendor/golang.org/x/sys/unix/syscall_zos_s390x.go @@ -4,11 +4,21 @@ //go:build zos && s390x +// Many of the following syscalls are not available on all versions of z/OS. +// Some missing calls have legacy implementations/simulations but others +// will be missing completely. To achieve consistent failing behaviour on +// legacy systems, we first test the function pointer via a safeloading +// mechanism to see if the function exists on a given system. Then execution +// is branched to either continue the function call, or return an error. + package unix import ( "bytes" "fmt" + "os" + "reflect" + "regexp" "runtime" "sort" "strings" @@ -17,17 +27,205 @@ import ( "unsafe" ) +//go:noescape +func initZosLibVec() + +//go:noescape +func GetZosLibVec() uintptr + +func init() { + initZosLibVec() + r0, _, _ := CallLeFuncWithPtrReturn(GetZosLibVec()+SYS_____GETENV_A<<4, uintptr(unsafe.Pointer(&([]byte("__ZOS_XSYSTRACE\x00"))[0]))) + if r0 != 0 { + n, _, _ := CallLeFuncWithPtrReturn(GetZosLibVec()+SYS___ATOI_A<<4, r0) + ZosTraceLevel = int(n) + r0, _, _ := CallLeFuncWithPtrReturn(GetZosLibVec()+SYS_____GETENV_A<<4, uintptr(unsafe.Pointer(&([]byte("__ZOS_XSYSTRACEFD\x00"))[0]))) + if r0 != 0 { + fd, _, _ := CallLeFuncWithPtrReturn(GetZosLibVec()+SYS___ATOI_A<<4, r0) + f := os.NewFile(fd, "zostracefile") + if f != nil { + ZosTracefile = f + } + } + + } +} + +//go:noescape +func CallLeFuncWithErr(funcdesc uintptr, parms ...uintptr) (ret, errno2 uintptr, err Errno) + +//go:noescape +func CallLeFuncWithPtrReturn(funcdesc uintptr, parms ...uintptr) (ret, errno2 uintptr, err Errno) + +// ------------------------------- +// pointer validity test +// good pointer returns 0 +// bad pointer returns 1 +// +//go:nosplit +func ptrtest(uintptr) uint64 + +// Load memory at ptr location with error handling if the location is invalid +// +//go:noescape +func safeload(ptr uintptr) (value uintptr, error uintptr) + const ( - O_CLOEXEC = 0 // Dummy value (not supported). - AF_LOCAL = AF_UNIX // AF_LOCAL is an alias for AF_UNIX + entrypointLocationOffset = 8 // From function descriptor + + xplinkEyecatcher = 0x00c300c500c500f1 // ".C.E.E.1" + eyecatcherOffset = 16 // From function entrypoint (negative) + ppa1LocationOffset = 8 // From function entrypoint (negative) + + nameLenOffset = 0x14 // From PPA1 start + nameOffset = 0x16 // From PPA1 start ) -func syscall_syscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno) -func syscall_rawsyscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno) -func syscall_syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno) -func syscall_rawsyscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno) -func syscall_syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err Errno) -func syscall_rawsyscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err Errno) +func getPpaOffset(funcptr uintptr) int64 { + entrypoint, err := safeload(funcptr + entrypointLocationOffset) + if err != 0 { + return -1 + } + + // XPLink functions have ".C.E.E.1" as the first 8 bytes (EBCDIC) + val, err := safeload(entrypoint - eyecatcherOffset) + if err != 0 { + return -1 + } + if val != xplinkEyecatcher { + return -1 + } + + ppaoff, err := safeload(entrypoint - ppa1LocationOffset) + if err != 0 { + return -1 + } + + ppaoff >>= 32 + return int64(ppaoff) +} + +//------------------------------- +// function descriptor pointer validity test +// good pointer returns 0 +// bad pointer returns 1 + +// TODO: currently mksyscall_zos_s390x.go generate empty string for funcName +// have correct funcName pass to the funcptrtest function +func funcptrtest(funcptr uintptr, funcName string) uint64 { + entrypoint, err := safeload(funcptr + entrypointLocationOffset) + if err != 0 { + return 1 + } + + ppaoff := getPpaOffset(funcptr) + if ppaoff == -1 { + return 1 + } + + // PPA1 offset value is from the start of the entire function block, not the entrypoint + ppa1 := (entrypoint - eyecatcherOffset) + uintptr(ppaoff) + + nameLen, err := safeload(ppa1 + nameLenOffset) + if err != 0 { + return 1 + } + + nameLen >>= 48 + if nameLen > 128 { + return 1 + } + + // no function name input to argument end here + if funcName == "" { + return 0 + } + + var funcname [128]byte + for i := 0; i < int(nameLen); i += 8 { + v, err := safeload(ppa1 + nameOffset + uintptr(i)) + if err != 0 { + return 1 + } + funcname[i] = byte(v >> 56) + funcname[i+1] = byte(v >> 48) + funcname[i+2] = byte(v >> 40) + funcname[i+3] = byte(v >> 32) + funcname[i+4] = byte(v >> 24) + funcname[i+5] = byte(v >> 16) + funcname[i+6] = byte(v >> 8) + funcname[i+7] = byte(v) + } + + runtime.CallLeFuncByPtr(runtime.XplinkLibvec+SYS___E2A_L<<4, // __e2a_l + []uintptr{uintptr(unsafe.Pointer(&funcname[0])), nameLen}) + + name := string(funcname[:nameLen]) + if name != funcName { + return 1 + } + + return 0 +} + +// For detection of capabilities on a system. +// Is function descriptor f a valid function? +func isValidLeFunc(f uintptr) error { + ret := funcptrtest(f, "") + if ret != 0 { + return fmt.Errorf("Bad pointer, not an LE function ") + } + return nil +} + +// Retrieve function name from descriptor +func getLeFuncName(f uintptr) (string, error) { + // assume it has been checked, only check ppa1 validity here + entry := ((*[2]uintptr)(unsafe.Pointer(f)))[1] + preamp := ((*[4]uint32)(unsafe.Pointer(entry - eyecatcherOffset))) + + offsetPpa1 := preamp[2] + if offsetPpa1 > 0x0ffff { + return "", fmt.Errorf("PPA1 offset seems too big 0x%x\n", offsetPpa1) + } + + ppa1 := uintptr(unsafe.Pointer(preamp)) + uintptr(offsetPpa1) + res := ptrtest(ppa1) + if res != 0 { + return "", fmt.Errorf("PPA1 address not valid") + } + + size := *(*uint16)(unsafe.Pointer(ppa1 + nameLenOffset)) + if size > 128 { + return "", fmt.Errorf("Function name seems too long, length=%d\n", size) + } + + var name [128]byte + funcname := (*[128]byte)(unsafe.Pointer(ppa1 + nameOffset)) + copy(name[0:size], funcname[0:size]) + + runtime.CallLeFuncByPtr(runtime.XplinkLibvec+SYS___E2A_L<<4, // __e2a_l + []uintptr{uintptr(unsafe.Pointer(&name[0])), uintptr(size)}) + + return string(name[:size]), nil +} + +// Check z/OS version +func zosLeVersion() (version, release uint32) { + p1 := (*(*uintptr)(unsafe.Pointer(uintptr(1208)))) >> 32 + p1 = *(*uintptr)(unsafe.Pointer(uintptr(p1 + 88))) + p1 = *(*uintptr)(unsafe.Pointer(uintptr(p1 + 8))) + p1 = *(*uintptr)(unsafe.Pointer(uintptr(p1 + 984))) + vrm := *(*uint32)(unsafe.Pointer(p1 + 80)) + version = (vrm & 0x00ff0000) >> 16 + release = (vrm & 0x0000ff00) >> 8 + return +} + +// returns a zos C FILE * for stdio fd 0, 1, 2 +func ZosStdioFilep(fd int32) uintptr { + return uintptr(*(*uint64)(unsafe.Pointer(uintptr(*(*uint64)(unsafe.Pointer(uintptr(*(*uint64)(unsafe.Pointer(uintptr(uint64(*(*uint32)(unsafe.Pointer(uintptr(1208)))) + 80))) + uint64((fd+2)<<3)))))))) +} func copyStat(stat *Stat_t, statLE *Stat_LE_t) { stat.Dev = uint64(statLE.Dev) @@ -65,6 +263,21 @@ func (d *Dirent) NameString() string { } } +func DecodeData(dest []byte, sz int, val uint64) { + for i := 0; i < sz; i++ { + dest[sz-1-i] = byte((val >> (uint64(i * 8))) & 0xff) + } +} + +func EncodeData(data []byte) uint64 { + var value uint64 + sz := len(data) + for i := 0; i < sz; i++ { + value |= uint64(data[i]) << uint64(((sz - i - 1) * 8)) + } + return value +} + func (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, _Socklen, error) { if sa.Port < 0 || sa.Port > 0xFFFF { return nil, 0, EINVAL @@ -74,7 +287,9 @@ func (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, _Socklen, error) { p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port)) p[0] = byte(sa.Port >> 8) p[1] = byte(sa.Port) - sa.raw.Addr = sa.Addr + for i := 0; i < len(sa.Addr); i++ { + sa.raw.Addr[i] = sa.Addr[i] + } return unsafe.Pointer(&sa.raw), _Socklen(sa.raw.Len), nil } @@ -88,7 +303,9 @@ func (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, _Socklen, error) { p[0] = byte(sa.Port >> 8) p[1] = byte(sa.Port) sa.raw.Scope_id = sa.ZoneId - sa.raw.Addr = sa.Addr + for i := 0; i < len(sa.Addr); i++ { + sa.raw.Addr[i] = sa.Addr[i] + } return unsafe.Pointer(&sa.raw), _Socklen(sa.raw.Len), nil } @@ -146,7 +363,9 @@ func anyToSockaddr(_ int, rsa *RawSockaddrAny) (Sockaddr, error) { sa := new(SockaddrInet4) p := (*[2]byte)(unsafe.Pointer(&pp.Port)) sa.Port = int(p[0])<<8 + int(p[1]) - sa.Addr = pp.Addr + for i := 0; i < len(sa.Addr); i++ { + sa.Addr[i] = pp.Addr[i] + } return sa, nil case AF_INET6: @@ -155,7 +374,9 @@ func anyToSockaddr(_ int, rsa *RawSockaddrAny) (Sockaddr, error) { p := (*[2]byte)(unsafe.Pointer(&pp.Port)) sa.Port = int(p[0])<<8 + int(p[1]) sa.ZoneId = pp.Scope_id - sa.Addr = pp.Addr + for i := 0; i < len(sa.Addr); i++ { + sa.Addr[i] = pp.Addr[i] + } return sa, nil } return nil, EAFNOSUPPORT @@ -177,6 +398,43 @@ func Accept(fd int) (nfd int, sa Sockaddr, err error) { return } +func Accept4(fd int, flags int) (nfd int, sa Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + nfd, err = accept4(fd, &rsa, &len, flags) + if err != nil { + return + } + if len > SizeofSockaddrAny { + panic("RawSockaddrAny too small") + } + // TODO(neeilan): Remove 0 in call + sa, err = anyToSockaddr(0, &rsa) + if err != nil { + Close(nfd) + nfd = 0 + } + return +} + +func Ctermid() (tty string, err error) { + var termdev [1025]byte + runtime.EnterSyscall() + r0, err2, err1 := CallLeFuncWithPtrReturn(GetZosLibVec()+SYS___CTERMID_A<<4, uintptr(unsafe.Pointer(&termdev[0]))) + runtime.ExitSyscall() + if r0 == 0 { + return "", fmt.Errorf("%s (errno2=0x%x)\n", err1.Error(), err2) + } + s := string(termdev[:]) + idx := strings.Index(s, string(rune(0))) + if idx == -1 { + tty = s + } else { + tty = s[:idx] + } + return +} + func (iov *Iovec) SetLen(length int) { iov.Len = uint64(length) } @@ -190,10 +448,16 @@ func (cmsg *Cmsghdr) SetLen(length int) { } //sys fcntl(fd int, cmd int, arg int) (val int, err error) +//sys Flistxattr(fd int, dest []byte) (sz int, err error) = SYS___FLISTXATTR_A +//sys Fremovexattr(fd int, attr string) (err error) = SYS___FREMOVEXATTR_A //sys read(fd int, p []byte) (n int, err error) //sys write(fd int, p []byte) (n int, err error) +//sys Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) = SYS___FGETXATTR_A +//sys Fsetxattr(fd int, attr string, data []byte, flag int) (err error) = SYS___FSETXATTR_A + //sys accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) = SYS___ACCEPT_A +//sys accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) = SYS___ACCEPT4_A //sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) = SYS___BIND_A //sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) = SYS___CONNECT_A //sysnb getgroups(n int, list *_Gid_t) (nn int, err error) @@ -204,6 +468,7 @@ func (cmsg *Cmsghdr) SetLen(length int) { //sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) //sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) = SYS___GETPEERNAME_A //sysnb getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) = SYS___GETSOCKNAME_A +//sys Removexattr(path string, attr string) (err error) = SYS___REMOVEXATTR_A //sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) = SYS___RECVFROM_A //sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) = SYS___SENDTO_A //sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) = SYS___RECVMSG_A @@ -212,6 +477,10 @@ func (cmsg *Cmsghdr) SetLen(length int) { //sys munmap(addr uintptr, length uintptr) (err error) = SYS_MUNMAP //sys ioctl(fd int, req int, arg uintptr) (err error) = SYS_IOCTL //sys ioctlPtr(fd int, req int, arg unsafe.Pointer) (err error) = SYS_IOCTL +//sys shmat(id int, addr uintptr, flag int) (ret uintptr, err error) = SYS_SHMAT +//sys shmctl(id int, cmd int, buf *SysvShmDesc) (result int, err error) = SYS_SHMCTL64 +//sys shmdt(addr uintptr) (err error) = SYS_SHMDT +//sys shmget(key int, size int, flag int) (id int, err error) = SYS_SHMGET //sys Access(path string, mode uint32) (err error) = SYS___ACCESS_A //sys Chdir(path string) (err error) = SYS___CHDIR_A @@ -220,14 +489,31 @@ func (cmsg *Cmsghdr) SetLen(length int) { //sys Creat(path string, mode uint32) (fd int, err error) = SYS___CREAT_A //sys Dup(oldfd int) (fd int, err error) //sys Dup2(oldfd int, newfd int) (err error) +//sys Dup3(oldfd int, newfd int, flags int) (err error) = SYS_DUP3 +//sys Dirfd(dirp uintptr) (fd int, err error) = SYS_DIRFD +//sys EpollCreate(size int) (fd int, err error) = SYS_EPOLL_CREATE +//sys EpollCreate1(flags int) (fd int, err error) = SYS_EPOLL_CREATE1 +//sys EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) = SYS_EPOLL_CTL +//sys EpollPwait(epfd int, events []EpollEvent, msec int, sigmask *int) (n int, err error) = SYS_EPOLL_PWAIT +//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) = SYS_EPOLL_WAIT //sys Errno2() (er2 int) = SYS___ERRNO2 -//sys Err2ad() (eadd *int) = SYS___ERR2AD +//sys Eventfd(initval uint, flags int) (fd int, err error) = SYS_EVENTFD //sys Exit(code int) +//sys Faccessat(dirfd int, path string, mode uint32, flags int) (err error) = SYS___FACCESSAT_A + +func Faccessat2(dirfd int, path string, mode uint32, flags int) (err error) { + return Faccessat(dirfd, path, mode, flags) +} + //sys Fchdir(fd int) (err error) //sys Fchmod(fd int, mode uint32) (err error) +//sys Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) = SYS___FCHMODAT_A //sys Fchown(fd int, uid int, gid int) (err error) +//sys Fchownat(fd int, path string, uid int, gid int, flags int) (err error) = SYS___FCHOWNAT_A //sys FcntlInt(fd uintptr, cmd int, arg int) (retval int, err error) = SYS_FCNTL +//sys Fdatasync(fd int) (err error) = SYS_FDATASYNC //sys fstat(fd int, stat *Stat_LE_t) (err error) +//sys fstatat(dirfd int, path string, stat *Stat_LE_t, flags int) (err error) = SYS___FSTATAT_A func Fstat(fd int, stat *Stat_t) (err error) { var statLE Stat_LE_t @@ -236,28 +522,208 @@ func Fstat(fd int, stat *Stat_t) (err error) { return } +func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { + var statLE Stat_LE_t + err = fstatat(dirfd, path, &statLE, flags) + copyStat(stat, &statLE) + return +} + +func impl_Getxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___GETXATTR_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest))) + sz = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_GetxattrAddr() *(func(path string, attr string, dest []byte) (sz int, err error)) + +var Getxattr = enter_Getxattr + +func enter_Getxattr(path string, attr string, dest []byte) (sz int, err error) { + funcref := get_GetxattrAddr() + if validGetxattr() { + *funcref = impl_Getxattr + } else { + *funcref = error_Getxattr + } + return (*funcref)(path, attr, dest) +} + +func error_Getxattr(path string, attr string, dest []byte) (sz int, err error) { + return -1, ENOSYS +} + +func validGetxattr() bool { + if funcptrtest(GetZosLibVec()+SYS___GETXATTR_A<<4, "") == 0 { + if name, err := getLeFuncName(GetZosLibVec() + SYS___GETXATTR_A<<4); err == nil { + return name == "__getxattr_a" + } + } + return false +} + +//sys Lgetxattr(link string, attr string, dest []byte) (sz int, err error) = SYS___LGETXATTR_A +//sys Lsetxattr(path string, attr string, data []byte, flags int) (err error) = SYS___LSETXATTR_A + +func impl_Setxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___SETXATTR_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags)) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_SetxattrAddr() *(func(path string, attr string, data []byte, flags int) (err error)) + +var Setxattr = enter_Setxattr + +func enter_Setxattr(path string, attr string, data []byte, flags int) (err error) { + funcref := get_SetxattrAddr() + if validSetxattr() { + *funcref = impl_Setxattr + } else { + *funcref = error_Setxattr + } + return (*funcref)(path, attr, data, flags) +} + +func error_Setxattr(path string, attr string, data []byte, flags int) (err error) { + return ENOSYS +} + +func validSetxattr() bool { + if funcptrtest(GetZosLibVec()+SYS___SETXATTR_A<<4, "") == 0 { + if name, err := getLeFuncName(GetZosLibVec() + SYS___SETXATTR_A<<4); err == nil { + return name == "__setxattr_a" + } + } + return false +} + +//sys Fstatfs(fd int, buf *Statfs_t) (err error) = SYS_FSTATFS //sys Fstatvfs(fd int, stat *Statvfs_t) (err error) = SYS_FSTATVFS //sys Fsync(fd int) (err error) +//sys Futimes(fd int, tv []Timeval) (err error) = SYS_FUTIMES +//sys Futimesat(dirfd int, path string, tv []Timeval) (err error) = SYS___FUTIMESAT_A //sys Ftruncate(fd int, length int64) (err error) -//sys Getpagesize() (pgsize int) = SYS_GETPAGESIZE +//sys Getrandom(buf []byte, flags int) (n int, err error) = SYS_GETRANDOM +//sys InotifyInit() (fd int, err error) = SYS_INOTIFY_INIT +//sys InotifyInit1(flags int) (fd int, err error) = SYS_INOTIFY_INIT1 +//sys InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) = SYS___INOTIFY_ADD_WATCH_A +//sys InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) = SYS_INOTIFY_RM_WATCH +//sys Listxattr(path string, dest []byte) (sz int, err error) = SYS___LISTXATTR_A +//sys Llistxattr(path string, dest []byte) (sz int, err error) = SYS___LLISTXATTR_A +//sys Lremovexattr(path string, attr string) (err error) = SYS___LREMOVEXATTR_A +//sys Lutimes(path string, tv []Timeval) (err error) = SYS___LUTIMES_A //sys Mprotect(b []byte, prot int) (err error) = SYS_MPROTECT //sys Msync(b []byte, flags int) (err error) = SYS_MSYNC +//sys Console2(cmsg *ConsMsg2, modstr *byte, concmd *uint32) (err error) = SYS___CONSOLE2 + +// Pipe2 begin + +//go:nosplit +func getPipe2Addr() *(func([]int, int) error) + +var Pipe2 = pipe2Enter + +func pipe2Enter(p []int, flags int) (err error) { + if funcptrtest(GetZosLibVec()+SYS_PIPE2<<4, "") == 0 { + *getPipe2Addr() = pipe2Impl + } else { + *getPipe2Addr() = pipe2Error + } + return (*getPipe2Addr())(p, flags) +} + +func pipe2Impl(p []int, flags int) (err error) { + var pp [2]_C_int + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_PIPE2<<4, uintptr(unsafe.Pointer(&pp[0])), uintptr(flags)) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } else { + p[0] = int(pp[0]) + p[1] = int(pp[1]) + } + return +} +func pipe2Error(p []int, flags int) (err error) { + return fmt.Errorf("Pipe2 is not available on this system") +} + +// Pipe2 end + //sys Poll(fds []PollFd, timeout int) (n int, err error) = SYS_POLL + +func Readdir(dir uintptr) (dirent *Dirent, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___READDIR_A<<4, uintptr(dir)) + runtime.ExitSyscall() + dirent = (*Dirent)(unsafe.Pointer(r0)) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//sys Readdir_r(dirp uintptr, entry *direntLE, result **direntLE) (err error) = SYS___READDIR_R_A +//sys Statfs(path string, buf *Statfs_t) (err error) = SYS___STATFS_A +//sys Syncfs(fd int) (err error) = SYS_SYNCFS //sys Times(tms *Tms) (ticks uintptr, err error) = SYS_TIMES //sys W_Getmntent(buff *byte, size int) (lastsys int, err error) = SYS_W_GETMNTENT //sys W_Getmntent_A(buff *byte, size int) (lastsys int, err error) = SYS___W_GETMNTENT_A //sys mount_LE(path string, filesystem string, fstype string, mtm uint32, parmlen int32, parm string) (err error) = SYS___MOUNT_A -//sys unmount(filesystem string, mtm int) (err error) = SYS___UMOUNT_A +//sys unmount_LE(filesystem string, mtm int) (err error) = SYS___UMOUNT_A //sys Chroot(path string) (err error) = SYS___CHROOT_A //sys Select(nmsgsfds int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (ret int, err error) = SYS_SELECT -//sysnb Uname(buf *Utsname) (err error) = SYS___UNAME_A +//sysnb Uname(buf *Utsname) (err error) = SYS_____OSNAME_A +//sys Unshare(flags int) (err error) = SYS_UNSHARE func Ptsname(fd int) (name string, err error) { - r0, _, e1 := syscall_syscall(SYS___PTSNAME_A, uintptr(fd), 0, 0) - name = u2s(unsafe.Pointer(r0)) - if e1 != 0 { - err = errnoErr(e1) + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithPtrReturn(GetZosLibVec()+SYS___PTSNAME_A<<4, uintptr(fd)) + runtime.ExitSyscall() + if r0 == 0 { + err = errnoErr2(e1, e2) + } else { + name = u2s(unsafe.Pointer(r0)) } return } @@ -272,13 +738,19 @@ func u2s(cstr unsafe.Pointer) string { } func Close(fd int) (err error) { - _, _, e1 := syscall_syscall(SYS_CLOSE, uintptr(fd), 0, 0) + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_CLOSE<<4, uintptr(fd)) + runtime.ExitSyscall() for i := 0; e1 == EAGAIN && i < 10; i++ { - _, _, _ = syscall_syscall(SYS_USLEEP, uintptr(10), 0, 0) - _, _, e1 = syscall_syscall(SYS_CLOSE, uintptr(fd), 0, 0) + runtime.EnterSyscall() + CallLeFuncWithErr(GetZosLibVec()+SYS_USLEEP<<4, uintptr(10)) + runtime.ExitSyscall() + runtime.EnterSyscall() + r0, e2, e1 = CallLeFuncWithErr(GetZosLibVec()+SYS_CLOSE<<4, uintptr(fd)) + runtime.ExitSyscall() } - if e1 != 0 { - err = errnoErr(e1) + if r0 != 0 { + err = errnoErr2(e1, e2) } return } @@ -288,9 +760,15 @@ func Madvise(b []byte, advice int) (err error) { return } +func Mmap(fd int, offset int64, length int, prot int, flags int) (data []byte, err error) { + return mapper.Mmap(fd, offset, length, prot, flags) +} + +func Munmap(b []byte) (err error) { + return mapper.Munmap(b) +} + //sys Gethostname(buf []byte) (err error) = SYS___GETHOSTNAME_A -//sysnb Getegid() (egid int) -//sysnb Geteuid() (uid int) //sysnb Getgid() (gid int) //sysnb Getpid() (pid int) //sysnb Getpgid(pid int) (pgid int, err error) = SYS_GETPGID @@ -317,11 +795,14 @@ func Getrusage(who int, rusage *Rusage) (err error) { return } +//sys Getegid() (egid int) = SYS_GETEGID +//sys Geteuid() (euid int) = SYS_GETEUID //sysnb Getsid(pid int) (sid int, err error) = SYS_GETSID //sysnb Getuid() (uid int) //sysnb Kill(pid int, sig Signal) (err error) //sys Lchown(path string, uid int, gid int) (err error) = SYS___LCHOWN_A //sys Link(path string, link string) (err error) = SYS___LINK_A +//sys Linkat(oldDirFd int, oldPath string, newDirFd int, newPath string, flags int) (err error) = SYS___LINKAT_A //sys Listen(s int, n int) (err error) //sys lstat(path string, stat *Stat_LE_t) (err error) = SYS___LSTAT_A @@ -332,15 +813,150 @@ func Lstat(path string, stat *Stat_t) (err error) { return } +// for checking symlinks begins with $VERSION/ $SYSNAME/ $SYSSYMR/ $SYSSYMA/ +func isSpecialPath(path []byte) (v bool) { + var special = [4][8]byte{ + [8]byte{'V', 'E', 'R', 'S', 'I', 'O', 'N', '/'}, + [8]byte{'S', 'Y', 'S', 'N', 'A', 'M', 'E', '/'}, + [8]byte{'S', 'Y', 'S', 'S', 'Y', 'M', 'R', '/'}, + [8]byte{'S', 'Y', 'S', 'S', 'Y', 'M', 'A', '/'}} + + var i, j int + for i = 0; i < len(special); i++ { + for j = 0; j < len(special[i]); j++ { + if path[j] != special[i][j] { + break + } + } + if j == len(special[i]) { + return true + } + } + return false +} + +func realpath(srcpath string, abspath []byte) (pathlen int, errno int) { + var source [1024]byte + copy(source[:], srcpath) + source[len(srcpath)] = 0 + ret := runtime.CallLeFuncByPtr(runtime.XplinkLibvec+SYS___REALPATH_A<<4, //__realpath_a() + []uintptr{uintptr(unsafe.Pointer(&source[0])), + uintptr(unsafe.Pointer(&abspath[0]))}) + if ret != 0 { + index := bytes.IndexByte(abspath[:], byte(0)) + if index != -1 { + return index, 0 + } + } else { + errptr := (*int)(unsafe.Pointer(runtime.CallLeFuncByPtr(runtime.XplinkLibvec+SYS___ERRNO<<4, []uintptr{}))) //__errno() + return 0, *errptr + } + return 0, 245 // EBADDATA 245 +} + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + n = int(runtime.CallLeFuncByPtr(runtime.XplinkLibvec+SYS___READLINK_A<<4, + []uintptr{uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))})) + runtime.KeepAlive(unsafe.Pointer(_p0)) + if n == -1 { + value := *(*int32)(unsafe.Pointer(runtime.CallLeFuncByPtr(runtime.XplinkLibvec+SYS___ERRNO<<4, []uintptr{}))) + err = errnoErr(Errno(value)) + } else { + if buf[0] == '$' { + if isSpecialPath(buf[1:9]) { + cnt, err1 := realpath(path, buf) + if err1 == 0 { + n = cnt + } + } + } + } + return +} + +func impl_Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___READLINKAT_A<<4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + runtime.ExitSyscall() + n = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + return n, err + } else { + if buf[0] == '$' { + if isSpecialPath(buf[1:9]) { + cnt, err1 := realpath(path, buf) + if err1 == 0 { + n = cnt + } + } + } + } + return +} + +//go:nosplit +func get_ReadlinkatAddr() *(func(dirfd int, path string, buf []byte) (n int, err error)) + +var Readlinkat = enter_Readlinkat + +func enter_Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + funcref := get_ReadlinkatAddr() + if funcptrtest(GetZosLibVec()+SYS___READLINKAT_A<<4, "") == 0 { + *funcref = impl_Readlinkat + } else { + *funcref = error_Readlinkat + } + return (*funcref)(dirfd, path, buf) +} + +func error_Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + n = -1 + err = ENOSYS + return +} + //sys Mkdir(path string, mode uint32) (err error) = SYS___MKDIR_A +//sys Mkdirat(dirfd int, path string, mode uint32) (err error) = SYS___MKDIRAT_A //sys Mkfifo(path string, mode uint32) (err error) = SYS___MKFIFO_A //sys Mknod(path string, mode uint32, dev int) (err error) = SYS___MKNOD_A +//sys Mknodat(dirfd int, path string, mode uint32, dev int) (err error) = SYS___MKNODAT_A +//sys PivotRoot(newroot string, oldroot string) (err error) = SYS___PIVOT_ROOT_A //sys Pread(fd int, p []byte, offset int64) (n int, err error) //sys Pwrite(fd int, p []byte, offset int64) (n int, err error) -//sys Readlink(path string, buf []byte) (n int, err error) = SYS___READLINK_A +//sys Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) = SYS___PRCTL_A +//sysnb Prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) = SYS_PRLIMIT //sys Rename(from string, to string) (err error) = SYS___RENAME_A +//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) = SYS___RENAMEAT_A +//sys Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) = SYS___RENAMEAT2_A //sys Rmdir(path string) (err error) = SYS___RMDIR_A //sys Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK +//sys Setegid(egid int) (err error) = SYS_SETEGID +//sys Seteuid(euid int) (err error) = SYS_SETEUID +//sys Sethostname(p []byte) (err error) = SYS___SETHOSTNAME_A +//sys Setns(fd int, nstype int) (err error) = SYS_SETNS //sys Setpriority(which int, who int, prio int) (err error) //sysnb Setpgid(pid int, pgid int) (err error) = SYS_SETPGID //sysnb Setrlimit(resource int, lim *Rlimit) (err error) @@ -360,32 +976,57 @@ func Stat(path string, sta *Stat_t) (err error) { } //sys Symlink(path string, link string) (err error) = SYS___SYMLINK_A +//sys Symlinkat(oldPath string, dirfd int, newPath string) (err error) = SYS___SYMLINKAT_A //sys Sync() = SYS_SYNC //sys Truncate(path string, length int64) (err error) = SYS___TRUNCATE_A //sys Tcgetattr(fildes int, termptr *Termios) (err error) = SYS_TCGETATTR //sys Tcsetattr(fildes int, when int, termptr *Termios) (err error) = SYS_TCSETATTR //sys Umask(mask int) (oldmask int) //sys Unlink(path string) (err error) = SYS___UNLINK_A +//sys Unlinkat(dirfd int, path string, flags int) (err error) = SYS___UNLINKAT_A //sys Utime(path string, utim *Utimbuf) (err error) = SYS___UTIME_A //sys open(path string, mode int, perm uint32) (fd int, err error) = SYS___OPEN_A func Open(path string, mode int, perm uint32) (fd int, err error) { + if mode&O_ACCMODE == 0 { + mode |= O_RDONLY + } return open(path, mode, perm) } -func Mkfifoat(dirfd int, path string, mode uint32) (err error) { - wd, err := Getwd() - if err != nil { - return err +//sys openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) = SYS___OPENAT_A + +func Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) { + if flags&O_ACCMODE == 0 { + flags |= O_RDONLY } + return openat(dirfd, path, flags, mode) +} - if err := Fchdir(dirfd); err != nil { - return err +//sys openat2(dirfd int, path string, open_how *OpenHow, size int) (fd int, err error) = SYS___OPENAT2_A + +func Openat2(dirfd int, path string, how *OpenHow) (fd int, err error) { + if how.Flags&O_ACCMODE == 0 { + how.Flags |= O_RDONLY } - defer Chdir(wd) + return openat2(dirfd, path, how, SizeofOpenHow) +} - return Mkfifo(path, mode) +func ZosFdToPath(dirfd int) (path string, err error) { + var buffer [1024]byte + runtime.EnterSyscall() + ret, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_W_IOCTL<<4, uintptr(dirfd), 17, 1024, uintptr(unsafe.Pointer(&buffer[0]))) + runtime.ExitSyscall() + if ret == 0 { + zb := bytes.IndexByte(buffer[:], 0) + if zb == -1 { + zb = len(buffer) + } + CallLeFuncWithErr(GetZosLibVec()+SYS___E2A_L<<4, uintptr(unsafe.Pointer(&buffer[0])), uintptr(zb)) + return string(buffer[:zb]), nil + } + return "", errnoErr2(e1, e2) } //sys remove(path string) (err error) @@ -403,10 +1044,12 @@ func Getcwd(buf []byte) (n int, err error) { } else { p = unsafe.Pointer(&_zero) } - _, _, e := syscall_syscall(SYS___GETCWD_A, uintptr(p), uintptr(len(buf)), 0) + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithPtrReturn(GetZosLibVec()+SYS___GETCWD_A<<4, uintptr(p), uintptr(len(buf))) + runtime.ExitSyscall() n = clen(buf) + 1 - if e != 0 { - err = errnoErr(e) + if r0 == 0 { + err = errnoErr2(e1, e2) } return } @@ -520,9 +1163,41 @@ func (w WaitStatus) StopSignal() Signal { func (w WaitStatus) TrapCause() int { return -1 } +//sys waitid(idType int, id int, info *Siginfo, options int) (err error) + +func Waitid(idType int, id int, info *Siginfo, options int, rusage *Rusage) (err error) { + return waitid(idType, id, info, options) +} + //sys waitpid(pid int, wstatus *_C_int, options int) (wpid int, err error) -func Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, err error) { +func impl_Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_WAIT4<<4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage))) + runtime.ExitSyscall() + wpid = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_Wait4Addr() *(func(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, err error)) + +var Wait4 = enter_Wait4 + +func enter_Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, err error) { + funcref := get_Wait4Addr() + if funcptrtest(GetZosLibVec()+SYS_WAIT4<<4, "") == 0 { + *funcref = impl_Wait4 + } else { + *funcref = legacyWait4 + } + return (*funcref)(pid, wstatus, options, rusage) +} + +func legacyWait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, err error) { // TODO(mundaym): z/OS doesn't have wait4. I don't think getrusage does what we want. // At the moment rusage will not be touched. var status _C_int @@ -571,23 +1246,62 @@ func Pipe(p []int) (err error) { } var pp [2]_C_int err = pipe(&pp) - if err == nil { - p[0] = int(pp[0]) - p[1] = int(pp[1]) - } + p[0] = int(pp[0]) + p[1] = int(pp[1]) return } //sys utimes(path string, timeval *[2]Timeval) (err error) = SYS___UTIMES_A func Utimes(path string, tv []Timeval) (err error) { + if tv == nil { + return utimes(path, nil) + } if len(tv) != 2 { return EINVAL } return utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0]))) } -func UtimesNano(path string, ts []Timespec) error { +//sys utimensat(dirfd int, path string, ts *[2]Timespec, flags int) (err error) = SYS___UTIMENSAT_A + +func validUtimensat() bool { + if funcptrtest(GetZosLibVec()+SYS___UTIMENSAT_A<<4, "") == 0 { + if name, err := getLeFuncName(GetZosLibVec() + SYS___UTIMENSAT_A<<4); err == nil { + return name == "__utimensat_a" + } + } + return false +} + +// Begin UtimesNano + +//go:nosplit +func get_UtimesNanoAddr() *(func(path string, ts []Timespec) (err error)) + +var UtimesNano = enter_UtimesNano + +func enter_UtimesNano(path string, ts []Timespec) (err error) { + funcref := get_UtimesNanoAddr() + if validUtimensat() { + *funcref = utimesNanoImpl + } else { + *funcref = legacyUtimesNano + } + return (*funcref)(path, ts) +} + +func utimesNanoImpl(path string, ts []Timespec) (err error) { + if ts == nil { + return utimensat(AT_FDCWD, path, nil, 0) + } + if len(ts) != 2 { + return EINVAL + } + return utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0) +} + +func legacyUtimesNano(path string, ts []Timespec) (err error) { if len(ts) != 2 { return EINVAL } @@ -600,6 +1314,70 @@ func UtimesNano(path string, ts []Timespec) error { return utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0]))) } +// End UtimesNano + +// Begin UtimesNanoAt + +//go:nosplit +func get_UtimesNanoAtAddr() *(func(dirfd int, path string, ts []Timespec, flags int) (err error)) + +var UtimesNanoAt = enter_UtimesNanoAt + +func enter_UtimesNanoAt(dirfd int, path string, ts []Timespec, flags int) (err error) { + funcref := get_UtimesNanoAtAddr() + if validUtimensat() { + *funcref = utimesNanoAtImpl + } else { + *funcref = legacyUtimesNanoAt + } + return (*funcref)(dirfd, path, ts, flags) +} + +func utimesNanoAtImpl(dirfd int, path string, ts []Timespec, flags int) (err error) { + if ts == nil { + return utimensat(dirfd, path, nil, flags) + } + if len(ts) != 2 { + return EINVAL + } + return utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), flags) +} + +func legacyUtimesNanoAt(dirfd int, path string, ts []Timespec, flags int) (err error) { + if path[0] != '/' { + dirPath, err := ZosFdToPath(dirfd) + if err != nil { + return err + } + path = dirPath + "/" + path + } + if flags == AT_SYMLINK_NOFOLLOW { + if len(ts) != 2 { + return EINVAL + } + + if ts[0].Nsec >= 5e8 { + ts[0].Sec++ + } + ts[0].Nsec = 0 + if ts[1].Nsec >= 5e8 { + ts[1].Sec++ + } + ts[1].Nsec = 0 + + // Not as efficient as it could be because Timespec and + // Timeval have different types in the different OSes + tv := []Timeval{ + NsecToTimeval(TimespecToNsec(ts[0])), + NsecToTimeval(TimespecToNsec(ts[1])), + } + return Lutimes(path, tv) + } + return UtimesNano(path, ts) +} + +// End UtimesNanoAt + func Getsockname(fd int) (sa Sockaddr, err error) { var rsa RawSockaddrAny var len _Socklen = SizeofSockaddrAny @@ -1186,67 +1964,46 @@ func SendmsgN(fd int, p, oob []byte, to Sockaddr, flags int) (n int, err error) return n, nil } -func Opendir(name string) (uintptr, error) { - p, err := BytePtrFromString(name) - if err != nil { - return 0, err - } - dir, _, e := syscall_syscall(SYS___OPENDIR_A, uintptr(unsafe.Pointer(p)), 0, 0) - runtime.KeepAlive(unsafe.Pointer(p)) - if e != 0 { - err = errnoErr(e) - } - return dir, err -} - -// clearsyscall.Errno resets the errno value to 0. -func clearErrno() - -func Readdir(dir uintptr) (*Dirent, error) { - var ent Dirent - var res uintptr - // __readdir_r_a returns errno at the end of the directory stream, rather than 0. - // Therefore to avoid false positives we clear errno before calling it. - - // TODO(neeilan): Commented this out to get sys/unix compiling on z/OS. Uncomment and fix. Error: "undefined: clearsyscall" - //clearsyscall.Errno() // TODO(mundaym): check pre-emption rules. - - e, _, _ := syscall_syscall(SYS___READDIR_R_A, dir, uintptr(unsafe.Pointer(&ent)), uintptr(unsafe.Pointer(&res))) - var err error - if e != 0 { - err = errnoErr(Errno(e)) - } - if res == 0 { - return nil, err - } - return &ent, err -} - -func readdir_r(dirp uintptr, entry *direntLE, result **direntLE) (err error) { - r0, _, e1 := syscall_syscall(SYS___READDIR_R_A, dirp, uintptr(unsafe.Pointer(entry)), uintptr(unsafe.Pointer(result))) - if int64(r0) == -1 { - err = errnoErr(Errno(e1)) +func Opendir(name string) (uintptr, error) { + p, err := BytePtrFromString(name) + if err != nil { + return 0, err } - return + err = nil + runtime.EnterSyscall() + dir, e2, e1 := CallLeFuncWithPtrReturn(GetZosLibVec()+SYS___OPENDIR_A<<4, uintptr(unsafe.Pointer(p))) + runtime.ExitSyscall() + runtime.KeepAlive(unsafe.Pointer(p)) + if dir == 0 { + err = errnoErr2(e1, e2) + } + return dir, err } +// clearsyscall.Errno resets the errno value to 0. +func clearErrno() + func Closedir(dir uintptr) error { - _, _, e := syscall_syscall(SYS_CLOSEDIR, dir, 0, 0) - if e != 0 { - return errnoErr(e) + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_CLOSEDIR<<4, dir) + runtime.ExitSyscall() + if r0 != 0 { + return errnoErr2(e1, e2) } return nil } func Seekdir(dir uintptr, pos int) { - _, _, _ = syscall_syscall(SYS_SEEKDIR, dir, uintptr(pos), 0) + runtime.EnterSyscall() + CallLeFuncWithErr(GetZosLibVec()+SYS_SEEKDIR<<4, dir, uintptr(pos)) + runtime.ExitSyscall() } func Telldir(dir uintptr) (int, error) { - p, _, e := syscall_syscall(SYS_TELLDIR, dir, 0, 0) + p, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_TELLDIR<<4, dir) pos := int(p) - if pos == -1 { - return pos, errnoErr(e) + if int64(p) == -1 { + return pos, errnoErr2(e1, e2) } return pos, nil } @@ -1261,19 +2018,55 @@ func FcntlFlock(fd uintptr, cmd int, lk *Flock_t) error { *(*int64)(unsafe.Pointer(&flock[4])) = lk.Start *(*int64)(unsafe.Pointer(&flock[12])) = lk.Len *(*int32)(unsafe.Pointer(&flock[20])) = lk.Pid - _, _, errno := syscall_syscall(SYS_FCNTL, fd, uintptr(cmd), uintptr(unsafe.Pointer(&flock))) + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FCNTL<<4, fd, uintptr(cmd), uintptr(unsafe.Pointer(&flock))) + runtime.ExitSyscall() lk.Type = *(*int16)(unsafe.Pointer(&flock[0])) lk.Whence = *(*int16)(unsafe.Pointer(&flock[2])) lk.Start = *(*int64)(unsafe.Pointer(&flock[4])) lk.Len = *(*int64)(unsafe.Pointer(&flock[12])) lk.Pid = *(*int32)(unsafe.Pointer(&flock[20])) - if errno == 0 { + if r0 == 0 { return nil } - return errno + return errnoErr2(e1, e2) +} + +func impl_Flock(fd int, how int) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FLOCK<<4, uintptr(fd), uintptr(how)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_FlockAddr() *(func(fd int, how int) (err error)) + +var Flock = enter_Flock + +func validFlock(fp uintptr) bool { + if funcptrtest(GetZosLibVec()+SYS_FLOCK<<4, "") == 0 { + if name, err := getLeFuncName(GetZosLibVec() + SYS_FLOCK<<4); err == nil { + return name == "flock" + } + } + return false +} + +func enter_Flock(fd int, how int) (err error) { + funcref := get_FlockAddr() + if validFlock(GetZosLibVec() + SYS_FLOCK<<4) { + *funcref = impl_Flock + } else { + *funcref = legacyFlock + } + return (*funcref)(fd, how) } -func Flock(fd int, how int) error { +func legacyFlock(fd int, how int) error { var flock_type int16 var fcntl_cmd int @@ -1307,41 +2100,51 @@ func Flock(fd int, how int) error { } func Mlock(b []byte) (err error) { - _, _, e1 := syscall_syscall(SYS___MLOCKALL, _BPX_NONSWAP, 0, 0) - if e1 != 0 { - err = errnoErr(e1) + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___MLOCKALL<<4, _BPX_NONSWAP) + runtime.ExitSyscall() + if r0 != 0 { + err = errnoErr2(e1, e2) } return } func Mlock2(b []byte, flags int) (err error) { - _, _, e1 := syscall_syscall(SYS___MLOCKALL, _BPX_NONSWAP, 0, 0) - if e1 != 0 { - err = errnoErr(e1) + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___MLOCKALL<<4, _BPX_NONSWAP) + runtime.ExitSyscall() + if r0 != 0 { + err = errnoErr2(e1, e2) } return } func Mlockall(flags int) (err error) { - _, _, e1 := syscall_syscall(SYS___MLOCKALL, _BPX_NONSWAP, 0, 0) - if e1 != 0 { - err = errnoErr(e1) + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___MLOCKALL<<4, _BPX_NONSWAP) + runtime.ExitSyscall() + if r0 != 0 { + err = errnoErr2(e1, e2) } return } func Munlock(b []byte) (err error) { - _, _, e1 := syscall_syscall(SYS___MLOCKALL, _BPX_SWAP, 0, 0) - if e1 != 0 { - err = errnoErr(e1) + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___MLOCKALL<<4, _BPX_SWAP) + runtime.ExitSyscall() + if r0 != 0 { + err = errnoErr2(e1, e2) } return } func Munlockall() (err error) { - _, _, e1 := syscall_syscall(SYS___MLOCKALL, _BPX_SWAP, 0, 0) - if e1 != 0 { - err = errnoErr(e1) + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___MLOCKALL<<4, _BPX_SWAP) + runtime.ExitSyscall() + if r0 != 0 { + err = errnoErr2(e1, e2) } return } @@ -1372,15 +2175,104 @@ func ClockGettime(clockid int32, ts *Timespec) error { return nil } -func Statfs(path string, stat *Statfs_t) (err error) { - fd, err := open(path, O_RDONLY, 0) - defer Close(fd) - if err != nil { - return err +// Chtag + +//go:nosplit +func get_ChtagAddr() *(func(path string, ccsid uint64, textbit uint64) error) + +var Chtag = enter_Chtag + +func enter_Chtag(path string, ccsid uint64, textbit uint64) error { + funcref := get_ChtagAddr() + if validSetxattr() { + *funcref = impl_Chtag + } else { + *funcref = legacy_Chtag + } + return (*funcref)(path, ccsid, textbit) +} + +func legacy_Chtag(path string, ccsid uint64, textbit uint64) error { + tag := ccsid<<16 | textbit<<15 + var tag_buff [8]byte + DecodeData(tag_buff[:], 8, tag) + return Setxattr(path, "filetag", tag_buff[:], XATTR_REPLACE) +} + +func impl_Chtag(path string, ccsid uint64, textbit uint64) error { + tag := ccsid<<16 | textbit<<15 + var tag_buff [4]byte + DecodeData(tag_buff[:], 4, tag) + return Setxattr(path, "system.filetag", tag_buff[:], XATTR_REPLACE) +} + +// End of Chtag + +// Nanosleep + +//go:nosplit +func get_NanosleepAddr() *(func(time *Timespec, leftover *Timespec) error) + +var Nanosleep = enter_Nanosleep + +func enter_Nanosleep(time *Timespec, leftover *Timespec) error { + funcref := get_NanosleepAddr() + if funcptrtest(GetZosLibVec()+SYS_NANOSLEEP<<4, "") == 0 { + *funcref = impl_Nanosleep + } else { + *funcref = legacyNanosleep + } + return (*funcref)(time, leftover) +} + +func impl_Nanosleep(time *Timespec, leftover *Timespec) error { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_NANOSLEEP<<4, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover))) + runtime.ExitSyscall() + if int64(r0) == -1 { + return errnoErr2(e1, e2) + } + return nil +} + +func legacyNanosleep(time *Timespec, leftover *Timespec) error { + t0 := runtime.Nanotime1() + var secrem uint32 + var nsecrem uint32 + total := time.Sec*1000000000 + time.Nsec + elapsed := runtime.Nanotime1() - t0 + var rv int32 + var rc int32 + var err error + // repeatedly sleep for 1 second until less than 1 second left + for total-elapsed > 1000000000 { + rv, rc, _ = BpxCondTimedWait(uint32(1), uint32(0), uint32(CW_CONDVAR), &secrem, &nsecrem) + if rv != 0 && rc != 112 { // 112 is EAGAIN + if leftover != nil && rc == 120 { // 120 is EINTR + leftover.Sec = int64(secrem) + leftover.Nsec = int64(nsecrem) + } + err = Errno(rc) + return err + } + elapsed = runtime.Nanotime1() - t0 } - return Fstatfs(fd, stat) + // sleep the remainder + if total > elapsed { + rv, rc, _ = BpxCondTimedWait(uint32(0), uint32(total-elapsed), uint32(CW_CONDVAR), &secrem, &nsecrem) + } + if leftover != nil && rc == 120 { + leftover.Sec = int64(secrem) + leftover.Nsec = int64(nsecrem) + } + if rv != 0 && rc != 112 { + err = Errno(rc) + } + return err } +// End of Nanosleep + var ( Stdin = 0 Stdout = 1 @@ -1395,6 +2287,9 @@ var ( errENOENT error = syscall.ENOENT ) +var ZosTraceLevel int +var ZosTracefile *os.File + var ( signalNameMapOnce sync.Once signalNameMap map[string]syscall.Signal @@ -1416,6 +2311,56 @@ func errnoErr(e Errno) error { return e } +var reg *regexp.Regexp + +// enhanced with zos specific errno2 +func errnoErr2(e Errno, e2 uintptr) error { + switch e { + case 0: + return nil + case EAGAIN: + return errEAGAIN + /* + Allow the retrieval of errno2 for EINVAL and ENOENT on zos + case EINVAL: + return errEINVAL + case ENOENT: + return errENOENT + */ + } + if ZosTraceLevel > 0 { + var name string + if reg == nil { + reg = regexp.MustCompile("(^unix\\.[^/]+$|.*\\/unix\\.[^/]+$)") + } + i := 1 + pc, file, line, ok := runtime.Caller(i) + if ok { + name = runtime.FuncForPC(pc).Name() + } + for ok && reg.MatchString(runtime.FuncForPC(pc).Name()) { + i += 1 + pc, file, line, ok = runtime.Caller(i) + } + if ok { + if ZosTracefile == nil { + ZosConsolePrintf("From %s:%d\n", file, line) + ZosConsolePrintf("%s: %s (errno2=0x%x)\n", name, e.Error(), e2) + } else { + fmt.Fprintf(ZosTracefile, "From %s:%d\n", file, line) + fmt.Fprintf(ZosTracefile, "%s: %s (errno2=0x%x)\n", name, e.Error(), e2) + } + } else { + if ZosTracefile == nil { + ZosConsolePrintf("%s (errno2=0x%x)\n", e.Error(), e2) + } else { + fmt.Fprintf(ZosTracefile, "%s (errno2=0x%x)\n", e.Error(), e2) + } + } + } + return e +} + // ErrnoName returns the error name for error number e. func ErrnoName(e Errno) string { i := sort.Search(len(errorList), func(i int) bool { @@ -1474,6 +2419,9 @@ func (m *mmapper) Mmap(fd int, offset int64, length int, prot int, flags int) (d return nil, EINVAL } + // Set __MAP_64 by default + flags |= __MAP_64 + // Map the requested memory. addr, errno := m.mmap(0, uintptr(length), prot, flags, fd, offset) if errno != nil { @@ -1778,83 +2726,170 @@ func Exec(argv0 string, argv []string, envv []string) error { return syscall.Exec(argv0, argv, envv) } -func Mount(source string, target string, fstype string, flags uintptr, data string) (err error) { +func Getag(path string) (ccsid uint16, flag uint16, err error) { + var val [8]byte + sz, err := Getxattr(path, "ccsid", val[:]) + if err != nil { + return + } + ccsid = uint16(EncodeData(val[0:sz])) + sz, err = Getxattr(path, "flags", val[:]) + if err != nil { + return + } + flag = uint16(EncodeData(val[0:sz]) >> 15) + return +} + +// Mount begin +func impl_Mount(source string, target string, fstype string, flags uintptr, data string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(source) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(target) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(fstype) + if err != nil { + return + } + var _p3 *byte + _p3, err = BytePtrFromString(data) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___MOUNT1_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(_p3))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_MountAddr() *(func(source string, target string, fstype string, flags uintptr, data string) (err error)) + +var Mount = enter_Mount + +func enter_Mount(source string, target string, fstype string, flags uintptr, data string) (err error) { + funcref := get_MountAddr() + if validMount() { + *funcref = impl_Mount + } else { + *funcref = legacyMount + } + return (*funcref)(source, target, fstype, flags, data) +} + +func legacyMount(source string, target string, fstype string, flags uintptr, data string) (err error) { if needspace := 8 - len(fstype); needspace <= 0 { - fstype = fstype[:8] + fstype = fstype[0:8] } else { - fstype += " "[:needspace] + fstype += " "[0:needspace] } return mount_LE(target, source, fstype, uint32(flags), int32(len(data)), data) } -func Unmount(name string, mtm int) (err error) { +func validMount() bool { + if funcptrtest(GetZosLibVec()+SYS___MOUNT1_A<<4, "") == 0 { + if name, err := getLeFuncName(GetZosLibVec() + SYS___MOUNT1_A<<4); err == nil { + return name == "__mount1_a" + } + } + return false +} + +// Mount end + +// Unmount begin +func impl_Unmount(target string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(target) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___UMOUNT2_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_UnmountAddr() *(func(target string, flags int) (err error)) + +var Unmount = enter_Unmount + +func enter_Unmount(target string, flags int) (err error) { + funcref := get_UnmountAddr() + if funcptrtest(GetZosLibVec()+SYS___UMOUNT2_A<<4, "") == 0 { + *funcref = impl_Unmount + } else { + *funcref = legacyUnmount + } + return (*funcref)(target, flags) +} + +func legacyUnmount(name string, mtm int) (err error) { // mountpoint is always a full path and starts with a '/' // check if input string is not a mountpoint but a filesystem name if name[0] != '/' { - return unmount(name, mtm) + return unmount_LE(name, mtm) } // treat name as mountpoint b2s := func(arr []byte) string { - nulli := bytes.IndexByte(arr, 0) - if nulli == -1 { - return string(arr) - } else { - return string(arr[:nulli]) + var str string + for i := 0; i < len(arr); i++ { + if arr[i] == 0 { + str = string(arr[:i]) + break + } } + return str } var buffer struct { header W_Mnth fsinfo [64]W_Mntent } - fsCount, err := W_Getmntent_A((*byte)(unsafe.Pointer(&buffer)), int(unsafe.Sizeof(buffer))) - if err != nil { - return err - } - if fsCount == 0 { - return EINVAL - } - for i := 0; i < fsCount; i++ { - if b2s(buffer.fsinfo[i].Mountpoint[:]) == name { - err = unmount(b2s(buffer.fsinfo[i].Fsname[:]), mtm) - break + fs_count, err := W_Getmntent_A((*byte)(unsafe.Pointer(&buffer)), int(unsafe.Sizeof(buffer))) + if err == nil { + err = EINVAL + for i := 0; i < fs_count; i++ { + if b2s(buffer.fsinfo[i].Mountpoint[:]) == name { + err = unmount_LE(b2s(buffer.fsinfo[i].Fsname[:]), mtm) + break + } } + } else if fs_count == 0 { + err = EINVAL } return err } -func fdToPath(dirfd int) (path string, err error) { - var buffer [1024]byte - // w_ctrl() - ret := runtime.CallLeFuncByPtr(runtime.XplinkLibvec+SYS_W_IOCTL<<4, - []uintptr{uintptr(dirfd), 17, 1024, uintptr(unsafe.Pointer(&buffer[0]))}) - if ret == 0 { - zb := bytes.IndexByte(buffer[:], 0) - if zb == -1 { - zb = len(buffer) - } - // __e2a_l() - runtime.CallLeFuncByPtr(runtime.XplinkLibvec+SYS___E2A_L<<4, - []uintptr{uintptr(unsafe.Pointer(&buffer[0])), uintptr(zb)}) - return string(buffer[:zb]), nil - } - // __errno() - errno := int(*(*int32)(unsafe.Pointer(runtime.CallLeFuncByPtr(runtime.XplinkLibvec+SYS___ERRNO<<4, - []uintptr{})))) - // __errno2() - errno2 := int(runtime.CallLeFuncByPtr(runtime.XplinkLibvec+SYS___ERRNO2<<4, - []uintptr{})) - // strerror_r() - ret = runtime.CallLeFuncByPtr(runtime.XplinkLibvec+SYS_STRERROR_R<<4, - []uintptr{uintptr(errno), uintptr(unsafe.Pointer(&buffer[0])), 1024}) - if ret == 0 { - zb := bytes.IndexByte(buffer[:], 0) - if zb == -1 { - zb = len(buffer) - } - return "", fmt.Errorf("%s (errno2=0x%x)", buffer[:zb], errno2) - } else { - return "", fmt.Errorf("fdToPath errno %d (errno2=0x%x)", errno, errno2) +// Unmount end + +func direntIno(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Ino), unsafe.Sizeof(Dirent{}.Ino)) +} + +func direntReclen(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen)) +} + +func direntNamlen(buf []byte) (uint64, bool) { + reclen, ok := direntReclen(buf) + if !ok { + return 0, false } + return reclen - uint64(unsafe.Offsetof(Dirent{}.Name)), true } func direntLeToDirentUnix(dirent *direntLE, dir uintptr, path string) (Dirent, error) { @@ -1896,7 +2931,7 @@ func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { } // Get path from fd to avoid unavailable call (fdopendir) - path, err := fdToPath(fd) + path, err := ZosFdToPath(fd) if err != nil { return 0, err } @@ -1910,7 +2945,7 @@ func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { for { var entryLE direntLE var entrypLE *direntLE - e := readdir_r(d, &entryLE, &entrypLE) + e := Readdir_r(d, &entryLE, &entrypLE) if e != nil { return n, e } @@ -1956,23 +2991,127 @@ func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { return n, nil } -func ReadDirent(fd int, buf []byte) (n int, err error) { - var base = (*uintptr)(unsafe.Pointer(new(uint64))) - return Getdirentries(fd, buf, base) +func Err2ad() (eadd *int) { + r0, _, _ := CallLeFuncWithErr(GetZosLibVec() + SYS___ERR2AD<<4) + eadd = (*int)(unsafe.Pointer(r0)) + return } -func direntIno(buf []byte) (uint64, bool) { - return readInt(buf, unsafe.Offsetof(Dirent{}.Ino), unsafe.Sizeof(Dirent{}.Ino)) +func ZosConsolePrintf(format string, v ...interface{}) (int, error) { + type __cmsg struct { + _ uint16 + _ [2]uint8 + __msg_length uint32 + __msg uintptr + _ [4]uint8 + } + msg := fmt.Sprintf(format, v...) + strptr := unsafe.Pointer((*reflect.StringHeader)(unsafe.Pointer(&msg)).Data) + len := (*reflect.StringHeader)(unsafe.Pointer(&msg)).Len + cmsg := __cmsg{__msg_length: uint32(len), __msg: uintptr(strptr)} + cmd := uint32(0) + runtime.EnterSyscall() + rc, err2, err1 := CallLeFuncWithErr(GetZosLibVec()+SYS_____CONSOLE_A<<4, uintptr(unsafe.Pointer(&cmsg)), 0, uintptr(unsafe.Pointer(&cmd))) + runtime.ExitSyscall() + if rc != 0 { + return 0, fmt.Errorf("%s (errno2=0x%x)\n", err1.Error(), err2) + } + return 0, nil +} +func ZosStringToEbcdicBytes(str string, nullterm bool) (ebcdicBytes []byte) { + if nullterm { + ebcdicBytes = []byte(str + "\x00") + } else { + ebcdicBytes = []byte(str) + } + A2e(ebcdicBytes) + return +} +func ZosEbcdicBytesToString(b []byte, trimRight bool) (str string) { + res := make([]byte, len(b)) + copy(res, b) + E2a(res) + if trimRight { + str = string(bytes.TrimRight(res, " \x00")) + } else { + str = string(res) + } + return } -func direntReclen(buf []byte) (uint64, bool) { - return readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen)) +func fdToPath(dirfd int) (path string, err error) { + var buffer [1024]byte + // w_ctrl() + ret := runtime.CallLeFuncByPtr(runtime.XplinkLibvec+SYS_W_IOCTL<<4, + []uintptr{uintptr(dirfd), 17, 1024, uintptr(unsafe.Pointer(&buffer[0]))}) + if ret == 0 { + zb := bytes.IndexByte(buffer[:], 0) + if zb == -1 { + zb = len(buffer) + } + // __e2a_l() + runtime.CallLeFuncByPtr(runtime.XplinkLibvec+SYS___E2A_L<<4, + []uintptr{uintptr(unsafe.Pointer(&buffer[0])), uintptr(zb)}) + return string(buffer[:zb]), nil + } + // __errno() + errno := int(*(*int32)(unsafe.Pointer(runtime.CallLeFuncByPtr(runtime.XplinkLibvec+SYS___ERRNO<<4, + []uintptr{})))) + // __errno2() + errno2 := int(runtime.CallLeFuncByPtr(runtime.XplinkLibvec+SYS___ERRNO2<<4, + []uintptr{})) + // strerror_r() + ret = runtime.CallLeFuncByPtr(runtime.XplinkLibvec+SYS_STRERROR_R<<4, + []uintptr{uintptr(errno), uintptr(unsafe.Pointer(&buffer[0])), 1024}) + if ret == 0 { + zb := bytes.IndexByte(buffer[:], 0) + if zb == -1 { + zb = len(buffer) + } + return "", fmt.Errorf("%s (errno2=0x%x)", buffer[:zb], errno2) + } else { + return "", fmt.Errorf("fdToPath errno %d (errno2=0x%x)", errno, errno2) + } } -func direntNamlen(buf []byte) (uint64, bool) { - reclen, ok := direntReclen(buf) - if !ok { - return 0, false +func impl_Mkfifoat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return } - return reclen - uint64(unsafe.Offsetof(Dirent{}.Name)), true + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___MKFIFOAT_A<<4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_MkfifoatAddr() *(func(dirfd int, path string, mode uint32) (err error)) + +var Mkfifoat = enter_Mkfifoat + +func enter_Mkfifoat(dirfd int, path string, mode uint32) (err error) { + funcref := get_MkfifoatAddr() + if funcptrtest(GetZosLibVec()+SYS___MKFIFOAT_A<<4, "") == 0 { + *funcref = impl_Mkfifoat + } else { + *funcref = legacy_Mkfifoat + } + return (*funcref)(dirfd, path, mode) +} + +func legacy_Mkfifoat(dirfd int, path string, mode uint32) (err error) { + dirname, err := ZosFdToPath(dirfd) + if err != nil { + return err + } + return Mkfifo(dirname+"/"+path, mode) } + +//sys Posix_openpt(oflag int) (fd int, err error) = SYS_POSIX_OPENPT +//sys Grantpt(fildes int) (rc int, err error) = SYS_GRANTPT +//sys Unlockpt(fildes int) (rc int, err error) = SYS_UNLOCKPT diff --git a/vendor/golang.org/x/sys/unix/sysvshm_unix.go b/vendor/golang.org/x/sys/unix/sysvshm_unix.go index 79a84f18b..672d6b0a8 100644 --- a/vendor/golang.org/x/sys/unix/sysvshm_unix.go +++ b/vendor/golang.org/x/sys/unix/sysvshm_unix.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -//go:build (darwin && !ios) || linux +//go:build (darwin && !ios) || linux || zos package unix diff --git a/vendor/golang.org/x/sys/unix/sysvshm_unix_other.go b/vendor/golang.org/x/sys/unix/sysvshm_unix_other.go index 9eb0db664..8b7977a28 100644 --- a/vendor/golang.org/x/sys/unix/sysvshm_unix_other.go +++ b/vendor/golang.org/x/sys/unix/sysvshm_unix_other.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -//go:build darwin && !ios +//go:build (darwin && !ios) || zos package unix diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux.go b/vendor/golang.org/x/sys/unix/zerrors_linux.go index 36bf8399f..877a62b47 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux.go @@ -491,6 +491,7 @@ const ( BPF_F_REPLACE = 0x4 BPF_F_SLEEPABLE = 0x10 BPF_F_STRICT_ALIGNMENT = 0x1 + BPF_F_TEST_REG_INVARIANTS = 0x80 BPF_F_TEST_RND_HI32 = 0x4 BPF_F_TEST_RUN_ON_CPU = 0x1 BPF_F_TEST_STATE_FREQ = 0x8 @@ -501,6 +502,7 @@ const ( BPF_IMM = 0x0 BPF_IND = 0x40 BPF_JA = 0x0 + BPF_JCOND = 0xe0 BPF_JEQ = 0x10 BPF_JGE = 0x30 BPF_JGT = 0x20 @@ -656,6 +658,9 @@ const ( CAN_NPROTO = 0x8 CAN_RAW = 0x1 CAN_RAW_FILTER_MAX = 0x200 + CAN_RAW_XL_VCID_RX_FILTER = 0x4 + CAN_RAW_XL_VCID_TX_PASS = 0x2 + CAN_RAW_XL_VCID_TX_SET = 0x1 CAN_RTR_FLAG = 0x40000000 CAN_SFF_ID_BITS = 0xb CAN_SFF_MASK = 0x7ff @@ -1338,6 +1343,7 @@ const ( F_OFD_SETLK = 0x25 F_OFD_SETLKW = 0x26 F_OK = 0x0 + F_SEAL_EXEC = 0x20 F_SEAL_FUTURE_WRITE = 0x10 F_SEAL_GROW = 0x4 F_SEAL_SEAL = 0x1 @@ -1626,6 +1632,7 @@ const ( IP_FREEBIND = 0xf IP_HDRINCL = 0x3 IP_IPSEC_POLICY = 0x10 + IP_LOCAL_PORT_RANGE = 0x33 IP_MAXPACKET = 0xffff IP_MAX_MEMBERSHIPS = 0x14 IP_MF = 0x2000 @@ -1652,6 +1659,7 @@ const ( IP_PMTUDISC_OMIT = 0x5 IP_PMTUDISC_PROBE = 0x3 IP_PMTUDISC_WANT = 0x1 + IP_PROTOCOL = 0x34 IP_RECVERR = 0xb IP_RECVERR_RFC4884 = 0x1a IP_RECVFRAGSIZE = 0x19 @@ -1697,6 +1705,7 @@ const ( KEXEC_ARCH_S390 = 0x160000 KEXEC_ARCH_SH = 0x2a0000 KEXEC_ARCH_X86_64 = 0x3e0000 + KEXEC_FILE_DEBUG = 0x8 KEXEC_FILE_NO_INITRAMFS = 0x4 KEXEC_FILE_ON_CRASH = 0x2 KEXEC_FILE_UNLOAD = 0x1 @@ -1898,6 +1907,7 @@ const ( MNT_DETACH = 0x2 MNT_EXPIRE = 0x4 MNT_FORCE = 0x1 + MNT_ID_REQ_SIZE_VER0 = 0x18 MODULE_INIT_COMPRESSED_FILE = 0x4 MODULE_INIT_IGNORE_MODVERSIONS = 0x1 MODULE_INIT_IGNORE_VERMAGIC = 0x2 @@ -2166,7 +2176,7 @@ const ( NFT_SECMARK_CTX_MAXLEN = 0x100 NFT_SET_MAXNAMELEN = 0x100 NFT_SOCKET_MAX = 0x3 - NFT_TABLE_F_MASK = 0x3 + NFT_TABLE_F_MASK = 0x7 NFT_TABLE_MAXNAMELEN = 0x100 NFT_TRACETYPE_MAX = 0x3 NFT_TUNNEL_F_MASK = 0x7 @@ -2302,6 +2312,7 @@ const ( PERF_AUX_FLAG_PARTIAL = 0x4 PERF_AUX_FLAG_PMU_FORMAT_TYPE_MASK = 0xff00 PERF_AUX_FLAG_TRUNCATED = 0x1 + PERF_BRANCH_ENTRY_INFO_BITS_MAX = 0x21 PERF_BR_ARM64_DEBUG_DATA = 0x7 PERF_BR_ARM64_DEBUG_EXIT = 0x5 PERF_BR_ARM64_DEBUG_HALT = 0x4 @@ -2399,6 +2410,7 @@ const ( PERF_RECORD_MISC_USER = 0x2 PERF_SAMPLE_BRANCH_PLM_ALL = 0x7 PERF_SAMPLE_WEIGHT_TYPE = 0x1004000 + PID_FS_MAGIC = 0x50494446 PIPEFS_MAGIC = 0x50495045 PPPIOCGNPMODE = 0xc008744c PPPIOCNEWUNIT = 0xc004743e @@ -2892,8 +2904,9 @@ const ( RWF_APPEND = 0x10 RWF_DSYNC = 0x2 RWF_HIPRI = 0x1 + RWF_NOAPPEND = 0x20 RWF_NOWAIT = 0x8 - RWF_SUPPORTED = 0x1f + RWF_SUPPORTED = 0x3f RWF_SYNC = 0x4 RWF_WRITE_LIFE_NOT_SET = 0x0 SCHED_BATCH = 0x3 @@ -2914,7 +2927,9 @@ const ( SCHED_RESET_ON_FORK = 0x40000000 SCHED_RR = 0x2 SCM_CREDENTIALS = 0x2 + SCM_PIDFD = 0x4 SCM_RIGHTS = 0x1 + SCM_SECURITY = 0x3 SCM_TIMESTAMP = 0x1d SC_LOG_FLUSH = 0x100000 SECCOMP_ADDFD_FLAG_SEND = 0x2 @@ -3047,6 +3062,8 @@ const ( SIOCSMIIREG = 0x8949 SIOCSRARP = 0x8962 SIOCWANDEV = 0x894a + SK_DIAG_BPF_STORAGE_MAX = 0x3 + SK_DIAG_BPF_STORAGE_REQ_MAX = 0x1 SMACK_MAGIC = 0x43415d53 SMART_AUTOSAVE = 0xd2 SMART_AUTO_OFFLINE = 0xdb @@ -3067,6 +3084,8 @@ const ( SOCKFS_MAGIC = 0x534f434b SOCK_BUF_LOCK_MASK = 0x3 SOCK_DCCP = 0x6 + SOCK_DESTROY = 0x15 + SOCK_DIAG_BY_FAMILY = 0x14 SOCK_IOC_TYPE = 0x89 SOCK_PACKET = 0xa SOCK_RAW = 0x3 @@ -3168,6 +3187,7 @@ const ( STATX_GID = 0x10 STATX_INO = 0x100 STATX_MNT_ID = 0x1000 + STATX_MNT_ID_UNIQUE = 0x4000 STATX_MODE = 0x2 STATX_MTIME = 0x40 STATX_NLINK = 0x4 @@ -3255,6 +3275,7 @@ const ( TCP_MAX_WINSHIFT = 0xe TCP_MD5SIG = 0xe TCP_MD5SIG_EXT = 0x20 + TCP_MD5SIG_FLAG_IFINDEX = 0x2 TCP_MD5SIG_FLAG_PREFIX = 0x1 TCP_MD5SIG_MAXKEYLEN = 0x50 TCP_MSS = 0x200 @@ -3562,12 +3583,16 @@ const ( XDP_RX_RING = 0x2 XDP_SHARED_UMEM = 0x1 XDP_STATISTICS = 0x7 + XDP_TXMD_FLAGS_CHECKSUM = 0x2 + XDP_TXMD_FLAGS_TIMESTAMP = 0x1 + XDP_TX_METADATA = 0x2 XDP_TX_RING = 0x3 XDP_UMEM_COMPLETION_RING = 0x6 XDP_UMEM_FILL_RING = 0x5 XDP_UMEM_PGOFF_COMPLETION_RING = 0x180000000 XDP_UMEM_PGOFF_FILL_RING = 0x100000000 XDP_UMEM_REG = 0x4 + XDP_UMEM_TX_SW_CSUM = 0x2 XDP_UMEM_UNALIGNED_CHUNK_FLAG = 0x1 XDP_USE_NEED_WAKEUP = 0x8 XDP_USE_SG = 0x10 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_386.go b/vendor/golang.org/x/sys/unix/zerrors_linux_386.go index 42ff8c3c1..e4bc0bd57 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_386.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_386.go @@ -118,6 +118,7 @@ const ( IXOFF = 0x1000 IXON = 0x400 MAP_32BIT = 0x40 + MAP_ABOVE4G = 0x80 MAP_ANON = 0x20 MAP_ANONYMOUS = 0x20 MAP_DENYWRITE = 0x800 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go index dca436004..689317afd 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go @@ -118,6 +118,7 @@ const ( IXOFF = 0x1000 IXON = 0x400 MAP_32BIT = 0x40 + MAP_ABOVE4G = 0x80 MAP_ANON = 0x20 MAP_ANONYMOUS = 0x20 MAP_DENYWRITE = 0x800 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go index d8cae6d15..14270508b 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go @@ -87,6 +87,7 @@ const ( FICLONE = 0x40049409 FICLONERANGE = 0x4020940d FLUSHO = 0x1000 + FPMR_MAGIC = 0x46504d52 FPSIMD_MAGIC = 0x46508001 FS_IOC_ENABLE_VERITY = 0x40806685 FS_IOC_GETFLAGS = 0x80086601 diff --git a/vendor/golang.org/x/sys/unix/zerrors_zos_s390x.go b/vendor/golang.org/x/sys/unix/zerrors_zos_s390x.go index 4dfd2e051..da08b2ab3 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_zos_s390x.go +++ b/vendor/golang.org/x/sys/unix/zerrors_zos_s390x.go @@ -10,41 +10,99 @@ package unix const ( - BRKINT = 0x0001 - CLOCK_MONOTONIC = 0x1 - CLOCK_PROCESS_CPUTIME_ID = 0x2 - CLOCK_REALTIME = 0x0 - CLOCK_THREAD_CPUTIME_ID = 0x3 - CS8 = 0x0030 - CSIZE = 0x0030 - ECHO = 0x00000008 - ECHONL = 0x00000001 - FD_CLOEXEC = 0x01 - FD_CLOFORK = 0x02 - FNDELAY = 0x04 - F_CLOSFD = 9 - F_CONTROL_CVT = 13 - F_DUPFD = 0 - F_DUPFD2 = 8 - F_GETFD = 1 - F_GETFL = 259 - F_GETLK = 5 - F_GETOWN = 10 - F_OK = 0x0 - F_RDLCK = 1 - F_SETFD = 2 - F_SETFL = 4 - F_SETLK = 6 - F_SETLKW = 7 - F_SETOWN = 11 - F_SETTAG = 12 - F_UNLCK = 3 - F_WRLCK = 2 - FSTYPE_ZFS = 0xe9 //"Z" - FSTYPE_HFS = 0xc8 //"H" - FSTYPE_NFS = 0xd5 //"N" - FSTYPE_TFS = 0xe3 //"T" - FSTYPE_AUTOMOUNT = 0xc1 //"A" + BRKINT = 0x0001 + CLOCAL = 0x1 + CLOCK_MONOTONIC = 0x1 + CLOCK_PROCESS_CPUTIME_ID = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_THREAD_CPUTIME_ID = 0x3 + CLONE_NEWIPC = 0x08000000 + CLONE_NEWNET = 0x40000000 + CLONE_NEWNS = 0x00020000 + CLONE_NEWPID = 0x20000000 + CLONE_NEWUTS = 0x04000000 + CLONE_PARENT = 0x00008000 + CS8 = 0x0030 + CSIZE = 0x0030 + ECHO = 0x00000008 + ECHONL = 0x00000001 + EFD_SEMAPHORE = 0x00002000 + EFD_CLOEXEC = 0x00001000 + EFD_NONBLOCK = 0x00000004 + EPOLL_CLOEXEC = 0x00001000 + EPOLL_CTL_ADD = 0 + EPOLL_CTL_MOD = 1 + EPOLL_CTL_DEL = 2 + EPOLLRDNORM = 0x0001 + EPOLLRDBAND = 0x0002 + EPOLLIN = 0x0003 + EPOLLOUT = 0x0004 + EPOLLWRBAND = 0x0008 + EPOLLPRI = 0x0010 + EPOLLERR = 0x0020 + EPOLLHUP = 0x0040 + EPOLLEXCLUSIVE = 0x20000000 + EPOLLONESHOT = 0x40000000 + FD_CLOEXEC = 0x01 + FD_CLOFORK = 0x02 + FD_SETSIZE = 0x800 + FNDELAY = 0x04 + F_CLOSFD = 9 + F_CONTROL_CVT = 13 + F_DUPFD = 0 + F_DUPFD2 = 8 + F_GETFD = 1 + F_GETFL = 259 + F_GETLK = 5 + F_GETOWN = 10 + F_OK = 0x0 + F_RDLCK = 1 + F_SETFD = 2 + F_SETFL = 4 + F_SETLK = 6 + F_SETLKW = 7 + F_SETOWN = 11 + F_SETTAG = 12 + F_UNLCK = 3 + F_WRLCK = 2 + FSTYPE_ZFS = 0xe9 //"Z" + FSTYPE_HFS = 0xc8 //"H" + FSTYPE_NFS = 0xd5 //"N" + FSTYPE_TFS = 0xe3 //"T" + FSTYPE_AUTOMOUNT = 0xc1 //"A" + GRND_NONBLOCK = 1 + GRND_RANDOM = 2 + HUPCL = 0x0100 // Hang up on last close + IN_CLOEXEC = 0x00001000 + IN_NONBLOCK = 0x00000004 + IN_ACCESS = 0x00000001 + IN_MODIFY = 0x00000002 + IN_ATTRIB = 0x00000004 + IN_CLOSE_WRITE = 0x00000008 + IN_CLOSE_NOWRITE = 0x00000010 + IN_OPEN = 0x00000020 + IN_MOVED_FROM = 0x00000040 + IN_MOVED_TO = 0x00000080 + IN_CREATE = 0x00000100 + IN_DELETE = 0x00000200 + IN_DELETE_SELF = 0x00000400 + IN_MOVE_SELF = 0x00000800 + IN_UNMOUNT = 0x00002000 + IN_Q_OVERFLOW = 0x00004000 + IN_IGNORED = 0x00008000 + IN_CLOSE = (IN_CLOSE_WRITE | IN_CLOSE_NOWRITE) + IN_MOVE = (IN_MOVED_FROM | IN_MOVED_TO) + IN_ALL_EVENTS = (IN_ACCESS | IN_MODIFY | IN_ATTRIB | + IN_CLOSE | IN_OPEN | IN_MOVE | + IN_CREATE | IN_DELETE | IN_DELETE_SELF | + IN_MOVE_SELF) + IN_ONLYDIR = 0x01000000 + IN_DONT_FOLLOW = 0x02000000 + IN_EXCL_UNLINK = 0x04000000 + IN_MASK_CREATE = 0x10000000 + IN_MASK_ADD = 0x20000000 + IN_ISDIR = 0x40000000 + IN_ONESHOT = 0x80000000 IP6F_MORE_FRAG = 0x0001 IP6F_OFF_MASK = 0xfff8 IP6F_RESERVED_MASK = 0x0006 @@ -152,10 +210,18 @@ const ( IP_PKTINFO = 101 IP_RECVPKTINFO = 102 IP_TOS = 2 - IP_TTL = 3 + IP_TTL = 14 IP_UNBLOCK_SOURCE = 11 + ICMP6_FILTER = 1 + MCAST_INCLUDE = 0 + MCAST_EXCLUDE = 1 + MCAST_JOIN_GROUP = 40 + MCAST_LEAVE_GROUP = 41 + MCAST_JOIN_SOURCE_GROUP = 42 + MCAST_LEAVE_SOURCE_GROUP = 43 + MCAST_BLOCK_SOURCE = 44 + MCAST_UNBLOCK_SOURCE = 46 ICANON = 0x0010 - ICMP6_FILTER = 0x26 ICRNL = 0x0002 IEXTEN = 0x0020 IGNBRK = 0x0004 @@ -165,10 +231,10 @@ const ( ISTRIP = 0x0080 IXON = 0x0200 IXOFF = 0x0100 - LOCK_SH = 0x1 // Not exist on zOS - LOCK_EX = 0x2 // Not exist on zOS - LOCK_NB = 0x4 // Not exist on zOS - LOCK_UN = 0x8 // Not exist on zOS + LOCK_SH = 0x1 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_UN = 0x8 POLLIN = 0x0003 POLLOUT = 0x0004 POLLPRI = 0x0010 @@ -182,15 +248,29 @@ const ( MAP_PRIVATE = 0x1 // changes are private MAP_SHARED = 0x2 // changes are shared MAP_FIXED = 0x4 // place exactly - MCAST_JOIN_GROUP = 40 - MCAST_LEAVE_GROUP = 41 - MCAST_JOIN_SOURCE_GROUP = 42 - MCAST_LEAVE_SOURCE_GROUP = 43 - MCAST_BLOCK_SOURCE = 44 - MCAST_UNBLOCK_SOURCE = 45 + __MAP_MEGA = 0x8 + __MAP_64 = 0x10 + MAP_ANON = 0x20 + MAP_ANONYMOUS = 0x20 MS_SYNC = 0x1 // msync - synchronous writes MS_ASYNC = 0x2 // asynchronous writes MS_INVALIDATE = 0x4 // invalidate mappings + MS_BIND = 0x00001000 + MS_MOVE = 0x00002000 + MS_NOSUID = 0x00000002 + MS_PRIVATE = 0x00040000 + MS_REC = 0x00004000 + MS_REMOUNT = 0x00008000 + MS_RDONLY = 0x00000001 + MS_UNBINDABLE = 0x00020000 + MNT_DETACH = 0x00000004 + ZOSDSFS_SUPER_MAGIC = 0x44534653 // zOS DSFS + NFS_SUPER_MAGIC = 0x6969 // NFS + NSFS_MAGIC = 0x6e736673 // PROCNS + PROC_SUPER_MAGIC = 0x9fa0 // proc FS + ZOSTFS_SUPER_MAGIC = 0x544653 // zOS TFS + ZOSUFS_SUPER_MAGIC = 0x554653 // zOS UFS + ZOSZFS_SUPER_MAGIC = 0x5A4653 // zOS ZFS MTM_RDONLY = 0x80000000 MTM_RDWR = 0x40000000 MTM_UMOUNT = 0x10000000 @@ -205,13 +285,20 @@ const ( MTM_REMOUNT = 0x00000100 MTM_NOSECURITY = 0x00000080 NFDBITS = 0x20 + ONLRET = 0x0020 // NL performs CR function O_ACCMODE = 0x03 O_APPEND = 0x08 O_ASYNCSIG = 0x0200 O_CREAT = 0x80 + O_DIRECT = 0x00002000 + O_NOFOLLOW = 0x00004000 + O_DIRECTORY = 0x00008000 + O_PATH = 0x00080000 + O_CLOEXEC = 0x00001000 O_EXCL = 0x40 O_GETFL = 0x0F O_LARGEFILE = 0x0400 + O_NDELAY = 0x4 O_NONBLOCK = 0x04 O_RDONLY = 0x02 O_RDWR = 0x03 @@ -248,6 +335,7 @@ const ( AF_IUCV = 17 AF_LAT = 14 AF_LINK = 18 + AF_LOCAL = AF_UNIX // AF_LOCAL is an alias for AF_UNIX AF_MAX = 30 AF_NBS = 7 AF_NDD = 23 @@ -285,15 +373,33 @@ const ( RLIMIT_AS = 5 RLIMIT_NOFILE = 6 RLIMIT_MEMLIMIT = 7 + RLIMIT_MEMLOCK = 0x8 RLIM_INFINITY = 2147483647 + SCHED_FIFO = 0x2 + SCM_CREDENTIALS = 0x2 SCM_RIGHTS = 0x01 SF_CLOSE = 0x00000002 SF_REUSE = 0x00000001 + SHM_RND = 0x2 + SHM_RDONLY = 0x1 + SHMLBA = 0x1000 + IPC_STAT = 0x3 + IPC_SET = 0x2 + IPC_RMID = 0x1 + IPC_PRIVATE = 0x0 + IPC_CREAT = 0x1000000 + __IPC_MEGA = 0x4000000 + __IPC_SHAREAS = 0x20000000 + __IPC_BELOWBAR = 0x10000000 + IPC_EXCL = 0x2000000 + __IPC_GIGA = 0x8000000 SHUT_RD = 0 SHUT_RDWR = 2 SHUT_WR = 1 + SOCK_CLOEXEC = 0x00001000 SOCK_CONN_DGRAM = 6 SOCK_DGRAM = 2 + SOCK_NONBLOCK = 0x800 SOCK_RAW = 3 SOCK_RDM = 4 SOCK_SEQPACKET = 5 @@ -378,8 +484,6 @@ const ( S_IFMST = 0x00FF0000 TCP_KEEPALIVE = 0x8 TCP_NODELAY = 0x1 - TCP_INFO = 0xb - TCP_USER_TIMEOUT = 0x1 TIOCGWINSZ = 0x4008a368 TIOCSWINSZ = 0x8008a367 TIOCSBRK = 0x2000a77b @@ -427,7 +531,10 @@ const ( VSUSP = 9 VTIME = 10 WCONTINUED = 0x4 + WEXITED = 0x8 WNOHANG = 0x1 + WNOWAIT = 0x20 + WSTOPPED = 0x10 WUNTRACED = 0x2 _BPX_SWAP = 1 _BPX_NONSWAP = 2 @@ -452,8 +559,28 @@ const ( MADV_FREE = 15 // for Linux compatibility -- no zos semantics MADV_WIPEONFORK = 16 // for Linux compatibility -- no zos semantics MADV_KEEPONFORK = 17 // for Linux compatibility -- no zos semantics - AT_SYMLINK_NOFOLLOW = 1 // for Unix compatibility -- no zos semantics - AT_FDCWD = 2 // for Unix compatibility -- no zos semantics + AT_SYMLINK_FOLLOW = 0x400 + AT_SYMLINK_NOFOLLOW = 0x100 + XATTR_CREATE = 0x1 + XATTR_REPLACE = 0x2 + P_PID = 0 + P_PGID = 1 + P_ALL = 2 + PR_SET_NAME = 15 + PR_GET_NAME = 16 + PR_SET_NO_NEW_PRIVS = 38 + PR_GET_NO_NEW_PRIVS = 39 + PR_SET_DUMPABLE = 4 + PR_GET_DUMPABLE = 3 + PR_SET_PDEATHSIG = 1 + PR_GET_PDEATHSIG = 2 + PR_SET_CHILD_SUBREAPER = 36 + PR_GET_CHILD_SUBREAPER = 37 + AT_FDCWD = -100 + AT_EACCESS = 0x200 + AT_EMPTY_PATH = 0x1000 + AT_REMOVEDIR = 0x200 + RENAME_NOREPLACE = 1 << 0 ) const ( @@ -476,6 +603,7 @@ const ( EMLINK = Errno(125) ENAMETOOLONG = Errno(126) ENFILE = Errno(127) + ENOATTR = Errno(265) ENODEV = Errno(128) ENOENT = Errno(129) ENOEXEC = Errno(130) @@ -700,7 +828,7 @@ var errorList = [...]struct { {145, "EDC5145I", "The parameter list is too long, or the message to receive was too large for the buffer."}, {146, "EDC5146I", "Too many levels of symbolic links."}, {147, "EDC5147I", "Illegal byte sequence."}, - {148, "", ""}, + {148, "EDC5148I", "The named attribute or data not available."}, {149, "EDC5149I", "Value Overflow Error."}, {150, "EDC5150I", "UNIX System Services is not active."}, {151, "EDC5151I", "Dynamic allocation error."}, @@ -743,6 +871,7 @@ var errorList = [...]struct { {259, "EDC5259I", "A CUN_RS_NO_CONVERSION error was issued by Unicode Services."}, {260, "EDC5260I", "A CUN_RS_TABLE_NOT_ALIGNED error was issued by Unicode Services."}, {262, "EDC5262I", "An iconv() function encountered an unexpected error while using Unicode Services."}, + {265, "EDC5265I", "The named attribute not available."}, {1000, "EDC8000I", "A bad socket-call constant was found in the IUCV header."}, {1001, "EDC8001I", "An error was found in the IUCV header."}, {1002, "EDC8002I", "A socket descriptor is out of range."}, diff --git a/vendor/golang.org/x/sys/unix/zsymaddr_zos_s390x.s b/vendor/golang.org/x/sys/unix/zsymaddr_zos_s390x.s new file mode 100644 index 000000000..b77ff5db9 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsymaddr_zos_s390x.s @@ -0,0 +1,364 @@ +// go run mksyscall_zos_s390x.go -o_sysnum zsysnum_zos_s390x.go -o_syscall zsyscall_zos_s390x.go -i_syscall syscall_zos_s390x.go -o_asm zsymaddr_zos_s390x.s +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build zos && s390x +#include "textflag.h" + +// provide the address of function variable to be fixed up. + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_FlistxattrAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Flistxattr(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_FremovexattrAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Fremovexattr(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_FgetxattrAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Fgetxattr(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_FsetxattrAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Fsetxattr(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_accept4Addr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·accept4(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_RemovexattrAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Removexattr(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_Dup3Addr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Dup3(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_DirfdAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Dirfd(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_EpollCreateAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·EpollCreate(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_EpollCreate1Addr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·EpollCreate1(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_EpollCtlAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·EpollCtl(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_EpollPwaitAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·EpollPwait(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_EpollWaitAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·EpollWait(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_EventfdAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Eventfd(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_FaccessatAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Faccessat(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_FchmodatAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Fchmodat(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_FchownatAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Fchownat(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_FdatasyncAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Fdatasync(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_fstatatAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·fstatat(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_LgetxattrAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Lgetxattr(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_LsetxattrAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Lsetxattr(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_FstatfsAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Fstatfs(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_FutimesAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Futimes(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_FutimesatAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Futimesat(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_GetrandomAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Getrandom(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_InotifyInitAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·InotifyInit(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_InotifyInit1Addr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·InotifyInit1(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_InotifyAddWatchAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·InotifyAddWatch(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_InotifyRmWatchAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·InotifyRmWatch(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_ListxattrAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Listxattr(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_LlistxattrAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Llistxattr(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_LremovexattrAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Lremovexattr(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_LutimesAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Lutimes(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_StatfsAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Statfs(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_SyncfsAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Syncfs(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_UnshareAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Unshare(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_LinkatAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Linkat(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_MkdiratAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Mkdirat(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_MknodatAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Mknodat(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_PivotRootAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·PivotRoot(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_PrctlAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Prctl(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_PrlimitAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Prlimit(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_RenameatAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Renameat(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_Renameat2Addr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Renameat2(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_SethostnameAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Sethostname(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_SetnsAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Setns(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_SymlinkatAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Symlinkat(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_UnlinkatAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Unlinkat(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_openatAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·openat(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_openat2Addr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·openat2(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_utimensatAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·utimensat(SB), R8 + MOVD R8, ret+0(FP) + RET diff --git a/vendor/golang.org/x/sys/unix/zsyscall_zos_s390x.go b/vendor/golang.org/x/sys/unix/zsyscall_zos_s390x.go index 94f011238..7ccf66b7e 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_zos_s390x.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_zos_s390x.go @@ -1,4 +1,4 @@ -// go run mksyscall.go -tags zos,s390x syscall_zos_s390x.go +// go run mksyscall_zos_s390x.go -o_sysnum zsysnum_zos_s390x.go -o_syscall zsyscall_zos_s390x.go -i_syscall syscall_zos_s390x.go -o_asm zsymaddr_zos_s390x.s // Code generated by the command above; see README.md. DO NOT EDIT. //go:build zos && s390x @@ -6,17 +6,100 @@ package unix import ( + "runtime" + "syscall" "unsafe" ) +var _ syscall.Errno + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func fcntl(fd int, cmd int, arg int) (val int, err error) { - r0, _, e1 := syscall_syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FCNTL<<4, uintptr(fd), uintptr(cmd), uintptr(arg)) + runtime.ExitSyscall() val = int(r0) - if e1 != 0 { - err = errnoErr(e1) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Flistxattr(fd int, dest []byte) (sz int, err error) { + var _p0 unsafe.Pointer + if len(dest) > 0 { + _p0 = unsafe.Pointer(&dest[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___FLISTXATTR_A<<4, uintptr(fd), uintptr(_p0), uintptr(len(dest))) + runtime.ExitSyscall() + sz = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_FlistxattrAddr() *(func(fd int, dest []byte) (sz int, err error)) + +var Flistxattr = enter_Flistxattr + +func enter_Flistxattr(fd int, dest []byte) (sz int, err error) { + funcref := get_FlistxattrAddr() + if funcptrtest(GetZosLibVec()+SYS___FLISTXATTR_A<<4, "") == 0 { + *funcref = impl_Flistxattr + } else { + *funcref = error_Flistxattr + } + return (*funcref)(fd, dest) +} + +func error_Flistxattr(fd int, dest []byte) (sz int, err error) { + sz = -1 + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Fremovexattr(fd int, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___FREMOVEXATTR_A<<4, uintptr(fd), uintptr(unsafe.Pointer(_p0))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_FremovexattrAddr() *(func(fd int, attr string) (err error)) + +var Fremovexattr = enter_Fremovexattr + +func enter_Fremovexattr(fd int, attr string) (err error) { + funcref := get_FremovexattrAddr() + if funcptrtest(GetZosLibVec()+SYS___FREMOVEXATTR_A<<4, "") == 0 { + *funcref = impl_Fremovexattr + } else { + *funcref = error_Fremovexattr } + return (*funcref)(fd, attr) +} + +func error_Fremovexattr(fd int, attr string) (err error) { + err = ENOSYS return } @@ -29,10 +112,12 @@ func read(fd int, p []byte) (n int, err error) { } else { _p0 = unsafe.Pointer(&_zero) } - r0, _, e1 := syscall_syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_READ<<4, uintptr(fd), uintptr(_p0), uintptr(len(p))) + runtime.ExitSyscall() n = int(r0) - if e1 != 0 { - err = errnoErr(e1) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) } return } @@ -46,31 +131,159 @@ func write(fd int, p []byte) (n int, err error) { } else { _p0 = unsafe.Pointer(&_zero) } - r0, _, e1 := syscall_syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_WRITE<<4, uintptr(fd), uintptr(_p0), uintptr(len(p))) + runtime.ExitSyscall() n = int(r0) - if e1 != 0 { - err = errnoErr(e1) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___FGETXATTR_A<<4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + runtime.ExitSyscall() + sz = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_FgetxattrAddr() *(func(fd int, attr string, dest []byte) (sz int, err error)) + +var Fgetxattr = enter_Fgetxattr + +func enter_Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + funcref := get_FgetxattrAddr() + if funcptrtest(GetZosLibVec()+SYS___FGETXATTR_A<<4, "") == 0 { + *funcref = impl_Fgetxattr + } else { + *funcref = error_Fgetxattr + } + return (*funcref)(fd, attr, dest) +} + +func error_Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + sz = -1 + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Fsetxattr(fd int, attr string, data []byte, flag int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(data) > 0 { + _p1 = unsafe.Pointer(&data[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___FSETXATTR_A<<4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(data)), uintptr(flag)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_FsetxattrAddr() *(func(fd int, attr string, data []byte, flag int) (err error)) + +var Fsetxattr = enter_Fsetxattr + +func enter_Fsetxattr(fd int, attr string, data []byte, flag int) (err error) { + funcref := get_FsetxattrAddr() + if funcptrtest(GetZosLibVec()+SYS___FSETXATTR_A<<4, "") == 0 { + *funcref = impl_Fsetxattr + } else { + *funcref = error_Fsetxattr } + return (*funcref)(fd, attr, data, flag) +} + +func error_Fsetxattr(fd int, attr string, data []byte, flag int) (err error) { + err = ENOSYS return } // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { - r0, _, e1 := syscall_syscall(SYS___ACCEPT_A, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___ACCEPT_A<<4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + runtime.ExitSyscall() + fd = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___ACCEPT4_A<<4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags)) + runtime.ExitSyscall() fd = int(r0) - if e1 != 0 { - err = errnoErr(e1) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_accept4Addr() *(func(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)) + +var accept4 = enter_accept4 + +func enter_accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) { + funcref := get_accept4Addr() + if funcptrtest(GetZosLibVec()+SYS___ACCEPT4_A<<4, "") == 0 { + *funcref = impl_accept4 + } else { + *funcref = error_accept4 } + return (*funcref)(s, rsa, addrlen, flags) +} + +func error_accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) { + fd = -1 + err = ENOSYS return } // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { - _, _, e1 := syscall_syscall(SYS___BIND_A, uintptr(s), uintptr(addr), uintptr(addrlen)) - if e1 != 0 { - err = errnoErr(e1) + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___BIND_A<<4, uintptr(s), uintptr(addr), uintptr(addrlen)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) } return } @@ -78,9 +291,11 @@ func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { - _, _, e1 := syscall_syscall(SYS___CONNECT_A, uintptr(s), uintptr(addr), uintptr(addrlen)) - if e1 != 0 { - err = errnoErr(e1) + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___CONNECT_A<<4, uintptr(s), uintptr(addr), uintptr(addrlen)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) } return } @@ -88,10 +303,10 @@ func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func getgroups(n int, list *_Gid_t) (nn int, err error) { - r0, _, e1 := syscall_rawsyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_GETGROUPS<<4, uintptr(n), uintptr(unsafe.Pointer(list))) nn = int(r0) - if e1 != 0 { - err = errnoErr(e1) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) } return } @@ -99,9 +314,9 @@ func getgroups(n int, list *_Gid_t) (nn int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func setgroups(n int, list *_Gid_t) (err error) { - _, _, e1 := syscall_rawsyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) - if e1 != 0 { - err = errnoErr(e1) + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SETGROUPS<<4, uintptr(n), uintptr(unsafe.Pointer(list))) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) } return } @@ -109,9 +324,11 @@ func setgroups(n int, list *_Gid_t) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { - _, _, e1 := syscall_syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) - if e1 != 0 { - err = errnoErr(e1) + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_GETSOCKOPT<<4, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) } return } @@ -119,9 +336,11 @@ func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { - _, _, e1 := syscall_syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) - if e1 != 0 { - err = errnoErr(e1) + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SETSOCKOPT<<4, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) } return } @@ -129,10 +348,10 @@ func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func socket(domain int, typ int, proto int) (fd int, err error) { - r0, _, e1 := syscall_rawsyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SOCKET<<4, uintptr(domain), uintptr(typ), uintptr(proto)) fd = int(r0) - if e1 != 0 { - err = errnoErr(e1) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) } return } @@ -140,9 +359,9 @@ func socket(domain int, typ int, proto int) (fd int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { - _, _, e1 := syscall_rawsyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) - if e1 != 0 { - err = errnoErr(e1) + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SOCKETPAIR<<4, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd))) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) } return } @@ -150,9 +369,9 @@ func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { - _, _, e1 := syscall_rawsyscall(SYS___GETPEERNAME_A, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) - if e1 != 0 { - err = errnoErr(e1) + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___GETPEERNAME_A<<4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) } return } @@ -160,10 +379,52 @@ func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { - _, _, e1 := syscall_rawsyscall(SYS___GETSOCKNAME_A, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) - if e1 != 0 { - err = errnoErr(e1) + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___GETSOCKNAME_A<<4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Removexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___REMOVEXATTR_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_RemovexattrAddr() *(func(path string, attr string) (err error)) + +var Removexattr = enter_Removexattr + +func enter_Removexattr(path string, attr string) (err error) { + funcref := get_RemovexattrAddr() + if funcptrtest(GetZosLibVec()+SYS___REMOVEXATTR_A<<4, "") == 0 { + *funcref = impl_Removexattr + } else { + *funcref = error_Removexattr } + return (*funcref)(path, attr) +} + +func error_Removexattr(path string, attr string) (err error) { + err = ENOSYS return } @@ -176,10 +437,12 @@ func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Sockl } else { _p0 = unsafe.Pointer(&_zero) } - r0, _, e1 := syscall_syscall6(SYS___RECVFROM_A, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___RECVFROM_A<<4, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + runtime.ExitSyscall() n = int(r0) - if e1 != 0 { - err = errnoErr(e1) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) } return } @@ -193,9 +456,11 @@ func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) ( } else { _p0 = unsafe.Pointer(&_zero) } - _, _, e1 := syscall_syscall6(SYS___SENDTO_A, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) - if e1 != 0 { - err = errnoErr(e1) + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___SENDTO_A<<4, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) } return } @@ -203,10 +468,12 @@ func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) ( // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { - r0, _, e1 := syscall_syscall(SYS___RECVMSG_A, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___RECVMSG_A<<4, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + runtime.ExitSyscall() n = int(r0) - if e1 != 0 { - err = errnoErr(e1) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) } return } @@ -214,10 +481,12 @@ func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { - r0, _, e1 := syscall_syscall(SYS___SENDMSG_A, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___SENDMSG_A<<4, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + runtime.ExitSyscall() n = int(r0) - if e1 != 0 { - err = errnoErr(e1) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) } return } @@ -225,10 +494,12 @@ func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { - r0, _, e1 := syscall_syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos)) + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_MMAP<<4, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos)) + runtime.ExitSyscall() ret = uintptr(r0) - if e1 != 0 { - err = errnoErr(e1) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) } return } @@ -236,9 +507,11 @@ func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) ( // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func munmap(addr uintptr, length uintptr) (err error) { - _, _, e1 := syscall_syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) - if e1 != 0 { - err = errnoErr(e1) + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_MUNMAP<<4, uintptr(addr), uintptr(length)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) } return } @@ -246,9 +519,11 @@ func munmap(addr uintptr, length uintptr) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func ioctl(fd int, req int, arg uintptr) (err error) { - _, _, e1 := syscall_syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) - if e1 != 0 { - err = errnoErr(e1) + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_IOCTL<<4, uintptr(fd), uintptr(req), uintptr(arg)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) } return } @@ -256,9 +531,62 @@ func ioctl(fd int, req int, arg uintptr) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func ioctlPtr(fd int, req int, arg unsafe.Pointer) (err error) { - _, _, e1 := syscall_syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) - if e1 != 0 { - err = errnoErr(e1) + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_IOCTL<<4, uintptr(fd), uintptr(req), uintptr(arg)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func shmat(id int, addr uintptr, flag int) (ret uintptr, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SHMAT<<4, uintptr(id), uintptr(addr), uintptr(flag)) + runtime.ExitSyscall() + ret = uintptr(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func shmctl(id int, cmd int, buf *SysvShmDesc) (result int, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SHMCTL64<<4, uintptr(id), uintptr(cmd), uintptr(unsafe.Pointer(buf))) + runtime.ExitSyscall() + result = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func shmdt(addr uintptr) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SHMDT<<4, uintptr(addr)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func shmget(key int, size int, flag int) (id int, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SHMGET<<4, uintptr(key), uintptr(size), uintptr(flag)) + runtime.ExitSyscall() + id = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) } return } @@ -271,9 +599,11 @@ func Access(path string, mode uint32) (err error) { if err != nil { return } - _, _, e1 := syscall_syscall(SYS___ACCESS_A, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) - if e1 != 0 { - err = errnoErr(e1) + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___ACCESS_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) } return } @@ -286,9 +616,11 @@ func Chdir(path string) (err error) { if err != nil { return } - _, _, e1 := syscall_syscall(SYS___CHDIR_A, uintptr(unsafe.Pointer(_p0)), 0, 0) - if e1 != 0 { - err = errnoErr(e1) + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___CHDIR_A<<4, uintptr(unsafe.Pointer(_p0))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) } return } @@ -301,9 +633,11 @@ func Chown(path string, uid int, gid int) (err error) { if err != nil { return } - _, _, e1 := syscall_syscall(SYS___CHOWN_A, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) - if e1 != 0 { - err = errnoErr(e1) + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___CHOWN_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) } return } @@ -316,9 +650,11 @@ func Chmod(path string, mode uint32) (err error) { if err != nil { return } - _, _, e1 := syscall_syscall(SYS___CHMOD_A, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) - if e1 != 0 { - err = errnoErr(e1) + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___CHMOD_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) } return } @@ -331,10 +667,12 @@ func Creat(path string, mode uint32) (fd int, err error) { if err != nil { return } - r0, _, e1 := syscall_syscall(SYS___CREAT_A, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___CREAT_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + runtime.ExitSyscall() fd = int(r0) - if e1 != 0 { - err = errnoErr(e1) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) } return } @@ -342,10 +680,12 @@ func Creat(path string, mode uint32) (fd int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Dup(oldfd int) (fd int, err error) { - r0, _, e1 := syscall_syscall(SYS_DUP, uintptr(oldfd), 0, 0) + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_DUP<<4, uintptr(oldfd)) + runtime.ExitSyscall() fd = int(r0) - if e1 != 0 { - err = errnoErr(e1) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) } return } @@ -353,617 +693,2216 @@ func Dup(oldfd int) (fd int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Dup2(oldfd int, newfd int) (err error) { - _, _, e1 := syscall_syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0) - if e1 != 0 { - err = errnoErr(e1) + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_DUP2<<4, uintptr(oldfd), uintptr(newfd)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) } return } // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Errno2() (er2 int) { - uer2, _, _ := syscall_syscall(SYS___ERRNO2, 0, 0, 0) - er2 = int(uer2) +func impl_Dup3(oldfd int, newfd int, flags int) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_DUP3<<4, uintptr(oldfd), uintptr(newfd), uintptr(flags)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } return } -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +//go:nosplit +func get_Dup3Addr() *(func(oldfd int, newfd int, flags int) (err error)) -func Err2ad() (eadd *int) { - ueadd, _, _ := syscall_syscall(SYS___ERR2AD, 0, 0, 0) - eadd = (*int)(unsafe.Pointer(ueadd)) - return -} +var Dup3 = enter_Dup3 -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func enter_Dup3(oldfd int, newfd int, flags int) (err error) { + funcref := get_Dup3Addr() + if funcptrtest(GetZosLibVec()+SYS_DUP3<<4, "") == 0 { + *funcref = impl_Dup3 + } else { + *funcref = error_Dup3 + } + return (*funcref)(oldfd, newfd, flags) +} -func Exit(code int) { - syscall_syscall(SYS_EXIT, uintptr(code), 0, 0) +func error_Dup3(oldfd int, newfd int, flags int) (err error) { + err = ENOSYS return } // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Fchdir(fd int) (err error) { - _, _, e1 := syscall_syscall(SYS_FCHDIR, uintptr(fd), 0, 0) - if e1 != 0 { - err = errnoErr(e1) +func impl_Dirfd(dirp uintptr) (fd int, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_DIRFD<<4, uintptr(dirp)) + runtime.ExitSyscall() + fd = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) } return } -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +//go:nosplit +func get_DirfdAddr() *(func(dirp uintptr) (fd int, err error)) -func Fchmod(fd int, mode uint32) (err error) { - _, _, e1 := syscall_syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) - if e1 != 0 { - err = errnoErr(e1) +var Dirfd = enter_Dirfd + +func enter_Dirfd(dirp uintptr) (fd int, err error) { + funcref := get_DirfdAddr() + if funcptrtest(GetZosLibVec()+SYS_DIRFD<<4, "") == 0 { + *funcref = impl_Dirfd + } else { + *funcref = error_Dirfd } + return (*funcref)(dirp) +} + +func error_Dirfd(dirp uintptr) (fd int, err error) { + fd = -1 + err = ENOSYS return } // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Fchown(fd int, uid int, gid int) (err error) { - _, _, e1 := syscall_syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) - if e1 != 0 { - err = errnoErr(e1) +func impl_EpollCreate(size int) (fd int, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_EPOLL_CREATE<<4, uintptr(size)) + runtime.ExitSyscall() + fd = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) } return } -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +//go:nosplit +func get_EpollCreateAddr() *(func(size int) (fd int, err error)) -func FcntlInt(fd uintptr, cmd int, arg int) (retval int, err error) { - r0, _, e1 := syscall_syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) - retval = int(r0) - if e1 != 0 { - err = errnoErr(e1) +var EpollCreate = enter_EpollCreate + +func enter_EpollCreate(size int) (fd int, err error) { + funcref := get_EpollCreateAddr() + if funcptrtest(GetZosLibVec()+SYS_EPOLL_CREATE<<4, "") == 0 { + *funcref = impl_EpollCreate + } else { + *funcref = error_EpollCreate } + return (*funcref)(size) +} + +func error_EpollCreate(size int) (fd int, err error) { + fd = -1 + err = ENOSYS return } // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func fstat(fd int, stat *Stat_LE_t) (err error) { - _, _, e1 := syscall_syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) - if e1 != 0 { - err = errnoErr(e1) +func impl_EpollCreate1(flags int) (fd int, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_EPOLL_CREATE1<<4, uintptr(flags)) + runtime.ExitSyscall() + fd = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) } return } -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +//go:nosplit +func get_EpollCreate1Addr() *(func(flags int) (fd int, err error)) -func Fstatvfs(fd int, stat *Statvfs_t) (err error) { - _, _, e1 := syscall_syscall(SYS_FSTATVFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) - if e1 != 0 { - err = errnoErr(e1) +var EpollCreate1 = enter_EpollCreate1 + +func enter_EpollCreate1(flags int) (fd int, err error) { + funcref := get_EpollCreate1Addr() + if funcptrtest(GetZosLibVec()+SYS_EPOLL_CREATE1<<4, "") == 0 { + *funcref = impl_EpollCreate1 + } else { + *funcref = error_EpollCreate1 } + return (*funcref)(flags) +} + +func error_EpollCreate1(flags int) (fd int, err error) { + fd = -1 + err = ENOSYS return } // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Fsync(fd int) (err error) { - _, _, e1 := syscall_syscall(SYS_FSYNC, uintptr(fd), 0, 0) - if e1 != 0 { - err = errnoErr(e1) +func impl_EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_EPOLL_CTL<<4, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) } return } -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +//go:nosplit +func get_EpollCtlAddr() *(func(epfd int, op int, fd int, event *EpollEvent) (err error)) -func Ftruncate(fd int, length int64) (err error) { - _, _, e1 := syscall_syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0) - if e1 != 0 { - err = errnoErr(e1) +var EpollCtl = enter_EpollCtl + +func enter_EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) { + funcref := get_EpollCtlAddr() + if funcptrtest(GetZosLibVec()+SYS_EPOLL_CTL<<4, "") == 0 { + *funcref = impl_EpollCtl + } else { + *funcref = error_EpollCtl } - return + return (*funcref)(epfd, op, fd, event) } -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Getpagesize() (pgsize int) { - r0, _, _ := syscall_syscall(SYS_GETPAGESIZE, 0, 0, 0) - pgsize = int(r0) +func error_EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) { + err = ENOSYS return } // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Mprotect(b []byte, prot int) (err error) { +func impl_EpollPwait(epfd int, events []EpollEvent, msec int, sigmask *int) (n int, err error) { var _p0 unsafe.Pointer - if len(b) > 0 { - _p0 = unsafe.Pointer(&b[0]) + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) } else { _p0 = unsafe.Pointer(&_zero) } - _, _, e1 := syscall_syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) - if e1 != 0 { - err = errnoErr(e1) + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_EPOLL_PWAIT<<4, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), uintptr(unsafe.Pointer(sigmask))) + runtime.ExitSyscall() + n = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) } return } -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +//go:nosplit +func get_EpollPwaitAddr() *(func(epfd int, events []EpollEvent, msec int, sigmask *int) (n int, err error)) -func Msync(b []byte, flags int) (err error) { - var _p0 unsafe.Pointer - if len(b) > 0 { - _p0 = unsafe.Pointer(&b[0]) +var EpollPwait = enter_EpollPwait + +func enter_EpollPwait(epfd int, events []EpollEvent, msec int, sigmask *int) (n int, err error) { + funcref := get_EpollPwaitAddr() + if funcptrtest(GetZosLibVec()+SYS_EPOLL_PWAIT<<4, "") == 0 { + *funcref = impl_EpollPwait } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := syscall_syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) - if e1 != 0 { - err = errnoErr(e1) + *funcref = error_EpollPwait } + return (*funcref)(epfd, events, msec, sigmask) +} + +func error_EpollPwait(epfd int, events []EpollEvent, msec int, sigmask *int) (n int, err error) { + n = -1 + err = ENOSYS return } // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Poll(fds []PollFd, timeout int) (n int, err error) { +func impl_EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { var _p0 unsafe.Pointer - if len(fds) > 0 { - _p0 = unsafe.Pointer(&fds[0]) + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) } else { _p0 = unsafe.Pointer(&_zero) } - r0, _, e1 := syscall_syscall(SYS_POLL, uintptr(_p0), uintptr(len(fds)), uintptr(timeout)) + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_EPOLL_WAIT<<4, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec)) + runtime.ExitSyscall() n = int(r0) - if e1 != 0 { - err = errnoErr(e1) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) } return } -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +//go:nosplit +func get_EpollWaitAddr() *(func(epfd int, events []EpollEvent, msec int) (n int, err error)) -func Times(tms *Tms) (ticks uintptr, err error) { - r0, _, e1 := syscall_syscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0) - ticks = uintptr(r0) - if e1 != 0 { - err = errnoErr(e1) +var EpollWait = enter_EpollWait + +func enter_EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + funcref := get_EpollWaitAddr() + if funcptrtest(GetZosLibVec()+SYS_EPOLL_WAIT<<4, "") == 0 { + *funcref = impl_EpollWait + } else { + *funcref = error_EpollWait } + return (*funcref)(epfd, events, msec) +} + +func error_EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + n = -1 + err = ENOSYS return } // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func W_Getmntent(buff *byte, size int) (lastsys int, err error) { - r0, _, e1 := syscall_syscall(SYS_W_GETMNTENT, uintptr(unsafe.Pointer(buff)), uintptr(size), 0) - lastsys = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } +func Errno2() (er2 int) { + runtime.EnterSyscall() + r0, _, _ := CallLeFuncWithErr(GetZosLibVec() + SYS___ERRNO2<<4) + runtime.ExitSyscall() + er2 = int(r0) return } // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func W_Getmntent_A(buff *byte, size int) (lastsys int, err error) { - r0, _, e1 := syscall_syscall(SYS___W_GETMNTENT_A, uintptr(unsafe.Pointer(buff)), uintptr(size), 0) - lastsys = int(r0) - if e1 != 0 { - err = errnoErr(e1) +func impl_Eventfd(initval uint, flags int) (fd int, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_EVENTFD<<4, uintptr(initval), uintptr(flags)) + runtime.ExitSyscall() + fd = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) } return } +//go:nosplit +func get_EventfdAddr() *(func(initval uint, flags int) (fd int, err error)) + +var Eventfd = enter_Eventfd + +func enter_Eventfd(initval uint, flags int) (fd int, err error) { + funcref := get_EventfdAddr() + if funcptrtest(GetZosLibVec()+SYS_EVENTFD<<4, "") == 0 { + *funcref = impl_Eventfd + } else { + *funcref = error_Eventfd + } + return (*funcref)(initval, flags) +} + +func error_Eventfd(initval uint, flags int) (fd int, err error) { + fd = -1 + err = ENOSYS + return +} + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func mount_LE(path string, filesystem string, fstype string, mtm uint32, parmlen int32, parm string) (err error) { +func Exit(code int) { + runtime.EnterSyscall() + CallLeFuncWithErr(GetZosLibVec()+SYS_EXIT<<4, uintptr(code)) + runtime.ExitSyscall() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) if err != nil { return } - var _p1 *byte - _p1, err = BytePtrFromString(filesystem) - if err != nil { - return - } - var _p2 *byte - _p2, err = BytePtrFromString(fstype) - if err != nil { - return - } - var _p3 *byte - _p3, err = BytePtrFromString(parm) - if err != nil { - return - } - _, _, e1 := syscall_syscall6(SYS___MOUNT_A, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(mtm), uintptr(parmlen), uintptr(unsafe.Pointer(_p3))) - if e1 != 0 { - err = errnoErr(e1) + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___FACCESSAT_A<<4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) } return } -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +//go:nosplit +func get_FaccessatAddr() *(func(dirfd int, path string, mode uint32, flags int) (err error)) -func unmount(filesystem string, mtm int) (err error) { +var Faccessat = enter_Faccessat + +func enter_Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + funcref := get_FaccessatAddr() + if funcptrtest(GetZosLibVec()+SYS___FACCESSAT_A<<4, "") == 0 { + *funcref = impl_Faccessat + } else { + *funcref = error_Faccessat + } + return (*funcref)(dirfd, path, mode, flags) +} + +func error_Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FCHDIR<<4, uintptr(fd)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FCHMOD<<4, uintptr(fd), uintptr(mode)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { var _p0 *byte - _p0, err = BytePtrFromString(filesystem) + _p0, err = BytePtrFromString(path) if err != nil { return } - _, _, e1 := syscall_syscall(SYS___UMOUNT_A, uintptr(unsafe.Pointer(_p0)), uintptr(mtm), 0) - if e1 != 0 { - err = errnoErr(e1) + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___FCHMODAT_A<<4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_FchmodatAddr() *(func(dirfd int, path string, mode uint32, flags int) (err error)) + +var Fchmodat = enter_Fchmodat + +func enter_Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + funcref := get_FchmodatAddr() + if funcptrtest(GetZosLibVec()+SYS___FCHMODAT_A<<4, "") == 0 { + *funcref = impl_Fchmodat + } else { + *funcref = error_Fchmodat + } + return (*funcref)(dirfd, path, mode, flags) +} + +func error_Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FCHOWN<<4, uintptr(fd), uintptr(uid), uintptr(gid)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) } return } // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Chroot(path string) (err error) { +func impl_Fchownat(fd int, path string, uid int, gid int, flags int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) if err != nil { return } - _, _, e1 := syscall_syscall(SYS___CHROOT_A, uintptr(unsafe.Pointer(_p0)), 0, 0) - if e1 != 0 { - err = errnoErr(e1) + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___FCHOWNAT_A<<4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_FchownatAddr() *(func(fd int, path string, uid int, gid int, flags int) (err error)) + +var Fchownat = enter_Fchownat + +func enter_Fchownat(fd int, path string, uid int, gid int, flags int) (err error) { + funcref := get_FchownatAddr() + if funcptrtest(GetZosLibVec()+SYS___FCHOWNAT_A<<4, "") == 0 { + *funcref = impl_Fchownat + } else { + *funcref = error_Fchownat } + return (*funcref)(fd, path, uid, gid, flags) +} + +func error_Fchownat(fd int, path string, uid int, gid int, flags int) (err error) { + err = ENOSYS return } // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Uname(buf *Utsname) (err error) { - _, _, e1 := syscall_rawsyscall(SYS___UNAME_A, uintptr(unsafe.Pointer(buf)), 0, 0) - if e1 != 0 { - err = errnoErr(e1) +func FcntlInt(fd uintptr, cmd int, arg int) (retval int, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FCNTL<<4, uintptr(fd), uintptr(cmd), uintptr(arg)) + runtime.ExitSyscall() + retval = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) } return } // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Gethostname(buf []byte) (err error) { +func impl_Fdatasync(fd int) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FDATASYNC<<4, uintptr(fd)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_FdatasyncAddr() *(func(fd int) (err error)) + +var Fdatasync = enter_Fdatasync + +func enter_Fdatasync(fd int) (err error) { + funcref := get_FdatasyncAddr() + if funcptrtest(GetZosLibVec()+SYS_FDATASYNC<<4, "") == 0 { + *funcref = impl_Fdatasync + } else { + *funcref = error_Fdatasync + } + return (*funcref)(fd) +} + +func error_Fdatasync(fd int) (err error) { + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstat(fd int, stat *Stat_LE_t) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FSTAT<<4, uintptr(fd), uintptr(unsafe.Pointer(stat))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_fstatat(dirfd int, path string, stat *Stat_LE_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___FSTATAT_A<<4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_fstatatAddr() *(func(dirfd int, path string, stat *Stat_LE_t, flags int) (err error)) + +var fstatat = enter_fstatat + +func enter_fstatat(dirfd int, path string, stat *Stat_LE_t, flags int) (err error) { + funcref := get_fstatatAddr() + if funcptrtest(GetZosLibVec()+SYS___FSTATAT_A<<4, "") == 0 { + *funcref = impl_fstatat + } else { + *funcref = error_fstatat + } + return (*funcref)(dirfd, path, stat, flags) +} + +func error_fstatat(dirfd int, path string, stat *Stat_LE_t, flags int) (err error) { + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Lgetxattr(link string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___LGETXATTR_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest))) + runtime.ExitSyscall() + sz = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_LgetxattrAddr() *(func(link string, attr string, dest []byte) (sz int, err error)) + +var Lgetxattr = enter_Lgetxattr + +func enter_Lgetxattr(link string, attr string, dest []byte) (sz int, err error) { + funcref := get_LgetxattrAddr() + if funcptrtest(GetZosLibVec()+SYS___LGETXATTR_A<<4, "") == 0 { + *funcref = impl_Lgetxattr + } else { + *funcref = error_Lgetxattr + } + return (*funcref)(link, attr, dest) +} + +func error_Lgetxattr(link string, attr string, dest []byte) (sz int, err error) { + sz = -1 + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Lsetxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___LSETXATTR_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_LsetxattrAddr() *(func(path string, attr string, data []byte, flags int) (err error)) + +var Lsetxattr = enter_Lsetxattr + +func enter_Lsetxattr(path string, attr string, data []byte, flags int) (err error) { + funcref := get_LsetxattrAddr() + if funcptrtest(GetZosLibVec()+SYS___LSETXATTR_A<<4, "") == 0 { + *funcref = impl_Lsetxattr + } else { + *funcref = error_Lsetxattr + } + return (*funcref)(path, attr, data, flags) +} + +func error_Lsetxattr(path string, attr string, data []byte, flags int) (err error) { + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Fstatfs(fd int, buf *Statfs_t) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FSTATFS<<4, uintptr(fd), uintptr(unsafe.Pointer(buf))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_FstatfsAddr() *(func(fd int, buf *Statfs_t) (err error)) + +var Fstatfs = enter_Fstatfs + +func enter_Fstatfs(fd int, buf *Statfs_t) (err error) { + funcref := get_FstatfsAddr() + if funcptrtest(GetZosLibVec()+SYS_FSTATFS<<4, "") == 0 { + *funcref = impl_Fstatfs + } else { + *funcref = error_Fstatfs + } + return (*funcref)(fd, buf) +} + +func error_Fstatfs(fd int, buf *Statfs_t) (err error) { + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatvfs(fd int, stat *Statvfs_t) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FSTATVFS<<4, uintptr(fd), uintptr(unsafe.Pointer(stat))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FSYNC<<4, uintptr(fd)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Futimes(fd int, tv []Timeval) (err error) { var _p0 unsafe.Pointer - if len(buf) > 0 { - _p0 = unsafe.Pointer(&buf[0]) + if len(tv) > 0 { + _p0 = unsafe.Pointer(&tv[0]) } else { _p0 = unsafe.Pointer(&_zero) } - _, _, e1 := syscall_syscall(SYS___GETHOSTNAME_A, uintptr(_p0), uintptr(len(buf)), 0) - if e1 != 0 { - err = errnoErr(e1) + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FUTIMES<<4, uintptr(fd), uintptr(_p0), uintptr(len(tv))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) } return } -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +//go:nosplit +func get_FutimesAddr() *(func(fd int, tv []Timeval) (err error)) -func Getegid() (egid int) { - r0, _, _ := syscall_rawsyscall(SYS_GETEGID, 0, 0, 0) - egid = int(r0) +var Futimes = enter_Futimes + +func enter_Futimes(fd int, tv []Timeval) (err error) { + funcref := get_FutimesAddr() + if funcptrtest(GetZosLibVec()+SYS_FUTIMES<<4, "") == 0 { + *funcref = impl_Futimes + } else { + *funcref = error_Futimes + } + return (*funcref)(fd, tv) +} + +func error_Futimes(fd int, tv []Timeval) (err error) { + err = ENOSYS return } // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Geteuid() (uid int) { - r0, _, _ := syscall_rawsyscall(SYS_GETEUID, 0, 0, 0) - uid = int(r0) +func impl_Futimesat(dirfd int, path string, tv []Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(tv) > 0 { + _p1 = unsafe.Pointer(&tv[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___FUTIMESAT_A<<4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(tv))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_FutimesatAddr() *(func(dirfd int, path string, tv []Timeval) (err error)) + +var Futimesat = enter_Futimesat + +func enter_Futimesat(dirfd int, path string, tv []Timeval) (err error) { + funcref := get_FutimesatAddr() + if funcptrtest(GetZosLibVec()+SYS___FUTIMESAT_A<<4, "") == 0 { + *funcref = impl_Futimesat + } else { + *funcref = error_Futimesat + } + return (*funcref)(dirfd, path, tv) +} + +func error_Futimesat(dirfd int, path string, tv []Timeval) (err error) { + err = ENOSYS return } // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Getgid() (gid int) { - r0, _, _ := syscall_rawsyscall(SYS_GETGID, 0, 0, 0) - gid = int(r0) +func Ftruncate(fd int, length int64) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FTRUNCATE<<4, uintptr(fd), uintptr(length)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } return } // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Getpid() (pid int) { - r0, _, _ := syscall_rawsyscall(SYS_GETPID, 0, 0, 0) - pid = int(r0) +func impl_Getrandom(buf []byte, flags int) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_GETRANDOM<<4, uintptr(_p0), uintptr(len(buf)), uintptr(flags)) + runtime.ExitSyscall() + n = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_GetrandomAddr() *(func(buf []byte, flags int) (n int, err error)) + +var Getrandom = enter_Getrandom + +func enter_Getrandom(buf []byte, flags int) (n int, err error) { + funcref := get_GetrandomAddr() + if funcptrtest(GetZosLibVec()+SYS_GETRANDOM<<4, "") == 0 { + *funcref = impl_Getrandom + } else { + *funcref = error_Getrandom + } + return (*funcref)(buf, flags) +} + +func error_Getrandom(buf []byte, flags int) (n int, err error) { + n = -1 + err = ENOSYS return } // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Getpgid(pid int) (pgid int, err error) { - r0, _, e1 := syscall_rawsyscall(SYS_GETPGID, uintptr(pid), 0, 0) - pgid = int(r0) - if e1 != 0 { - err = errnoErr(e1) +func impl_InotifyInit() (fd int, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec() + SYS_INOTIFY_INIT<<4) + runtime.ExitSyscall() + fd = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_InotifyInitAddr() *(func() (fd int, err error)) + +var InotifyInit = enter_InotifyInit + +func enter_InotifyInit() (fd int, err error) { + funcref := get_InotifyInitAddr() + if funcptrtest(GetZosLibVec()+SYS_INOTIFY_INIT<<4, "") == 0 { + *funcref = impl_InotifyInit + } else { + *funcref = error_InotifyInit } + return (*funcref)() +} + +func error_InotifyInit() (fd int, err error) { + fd = -1 + err = ENOSYS return } // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Getppid() (pid int) { - r0, _, _ := syscall_rawsyscall(SYS_GETPPID, 0, 0, 0) - pid = int(r0) +func impl_InotifyInit1(flags int) (fd int, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_INOTIFY_INIT1<<4, uintptr(flags)) + runtime.ExitSyscall() + fd = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_InotifyInit1Addr() *(func(flags int) (fd int, err error)) + +var InotifyInit1 = enter_InotifyInit1 + +func enter_InotifyInit1(flags int) (fd int, err error) { + funcref := get_InotifyInit1Addr() + if funcptrtest(GetZosLibVec()+SYS_INOTIFY_INIT1<<4, "") == 0 { + *funcref = impl_InotifyInit1 + } else { + *funcref = error_InotifyInit1 + } + return (*funcref)(flags) +} + +func error_InotifyInit1(flags int) (fd int, err error) { + fd = -1 + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(pathname) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___INOTIFY_ADD_WATCH_A<<4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask)) + runtime.ExitSyscall() + watchdesc = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_InotifyAddWatchAddr() *(func(fd int, pathname string, mask uint32) (watchdesc int, err error)) + +var InotifyAddWatch = enter_InotifyAddWatch + +func enter_InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) { + funcref := get_InotifyAddWatchAddr() + if funcptrtest(GetZosLibVec()+SYS___INOTIFY_ADD_WATCH_A<<4, "") == 0 { + *funcref = impl_InotifyAddWatch + } else { + *funcref = error_InotifyAddWatch + } + return (*funcref)(fd, pathname, mask) +} + +func error_InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) { + watchdesc = -1 + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_INOTIFY_RM_WATCH<<4, uintptr(fd), uintptr(watchdesc)) + runtime.ExitSyscall() + success = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_InotifyRmWatchAddr() *(func(fd int, watchdesc uint32) (success int, err error)) + +var InotifyRmWatch = enter_InotifyRmWatch + +func enter_InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) { + funcref := get_InotifyRmWatchAddr() + if funcptrtest(GetZosLibVec()+SYS_INOTIFY_RM_WATCH<<4, "") == 0 { + *funcref = impl_InotifyRmWatch + } else { + *funcref = error_InotifyRmWatch + } + return (*funcref)(fd, watchdesc) +} + +func error_InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) { + success = -1 + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Listxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___LISTXATTR_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + runtime.ExitSyscall() + sz = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_ListxattrAddr() *(func(path string, dest []byte) (sz int, err error)) + +var Listxattr = enter_Listxattr + +func enter_Listxattr(path string, dest []byte) (sz int, err error) { + funcref := get_ListxattrAddr() + if funcptrtest(GetZosLibVec()+SYS___LISTXATTR_A<<4, "") == 0 { + *funcref = impl_Listxattr + } else { + *funcref = error_Listxattr + } + return (*funcref)(path, dest) +} + +func error_Listxattr(path string, dest []byte) (sz int, err error) { + sz = -1 + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Llistxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___LLISTXATTR_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + runtime.ExitSyscall() + sz = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_LlistxattrAddr() *(func(path string, dest []byte) (sz int, err error)) + +var Llistxattr = enter_Llistxattr + +func enter_Llistxattr(path string, dest []byte) (sz int, err error) { + funcref := get_LlistxattrAddr() + if funcptrtest(GetZosLibVec()+SYS___LLISTXATTR_A<<4, "") == 0 { + *funcref = impl_Llistxattr + } else { + *funcref = error_Llistxattr + } + return (*funcref)(path, dest) +} + +func error_Llistxattr(path string, dest []byte) (sz int, err error) { + sz = -1 + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Lremovexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___LREMOVEXATTR_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_LremovexattrAddr() *(func(path string, attr string) (err error)) + +var Lremovexattr = enter_Lremovexattr + +func enter_Lremovexattr(path string, attr string) (err error) { + funcref := get_LremovexattrAddr() + if funcptrtest(GetZosLibVec()+SYS___LREMOVEXATTR_A<<4, "") == 0 { + *funcref = impl_Lremovexattr + } else { + *funcref = error_Lremovexattr + } + return (*funcref)(path, attr) +} + +func error_Lremovexattr(path string, attr string) (err error) { + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Lutimes(path string, tv []Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(tv) > 0 { + _p1 = unsafe.Pointer(&tv[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___LUTIMES_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(tv))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_LutimesAddr() *(func(path string, tv []Timeval) (err error)) + +var Lutimes = enter_Lutimes + +func enter_Lutimes(path string, tv []Timeval) (err error) { + funcref := get_LutimesAddr() + if funcptrtest(GetZosLibVec()+SYS___LUTIMES_A<<4, "") == 0 { + *funcref = impl_Lutimes + } else { + *funcref = error_Lutimes + } + return (*funcref)(path, tv) +} + +func error_Lutimes(path string, tv []Timeval) (err error) { + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_MPROTECT<<4, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_MSYNC<<4, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Console2(cmsg *ConsMsg2, modstr *byte, concmd *uint32) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___CONSOLE2<<4, uintptr(unsafe.Pointer(cmsg)), uintptr(unsafe.Pointer(modstr)), uintptr(unsafe.Pointer(concmd))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Poll(fds []PollFd, timeout int) (n int, err error) { + var _p0 unsafe.Pointer + if len(fds) > 0 { + _p0 = unsafe.Pointer(&fds[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_POLL<<4, uintptr(_p0), uintptr(len(fds)), uintptr(timeout)) + runtime.ExitSyscall() + n = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readdir_r(dirp uintptr, entry *direntLE, result **direntLE) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___READDIR_R_A<<4, uintptr(dirp), uintptr(unsafe.Pointer(entry)), uintptr(unsafe.Pointer(result))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Statfs(path string, buf *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___STATFS_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_StatfsAddr() *(func(path string, buf *Statfs_t) (err error)) + +var Statfs = enter_Statfs + +func enter_Statfs(path string, buf *Statfs_t) (err error) { + funcref := get_StatfsAddr() + if funcptrtest(GetZosLibVec()+SYS___STATFS_A<<4, "") == 0 { + *funcref = impl_Statfs + } else { + *funcref = error_Statfs + } + return (*funcref)(path, buf) +} + +func error_Statfs(path string, buf *Statfs_t) (err error) { + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Syncfs(fd int) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SYNCFS<<4, uintptr(fd)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_SyncfsAddr() *(func(fd int) (err error)) + +var Syncfs = enter_Syncfs + +func enter_Syncfs(fd int) (err error) { + funcref := get_SyncfsAddr() + if funcptrtest(GetZosLibVec()+SYS_SYNCFS<<4, "") == 0 { + *funcref = impl_Syncfs + } else { + *funcref = error_Syncfs + } + return (*funcref)(fd) +} + +func error_Syncfs(fd int) (err error) { + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Times(tms *Tms) (ticks uintptr, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_TIMES<<4, uintptr(unsafe.Pointer(tms))) + runtime.ExitSyscall() + ticks = uintptr(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func W_Getmntent(buff *byte, size int) (lastsys int, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_W_GETMNTENT<<4, uintptr(unsafe.Pointer(buff)), uintptr(size)) + runtime.ExitSyscall() + lastsys = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func W_Getmntent_A(buff *byte, size int) (lastsys int, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___W_GETMNTENT_A<<4, uintptr(unsafe.Pointer(buff)), uintptr(size)) + runtime.ExitSyscall() + lastsys = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mount_LE(path string, filesystem string, fstype string, mtm uint32, parmlen int32, parm string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(filesystem) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(fstype) + if err != nil { + return + } + var _p3 *byte + _p3, err = BytePtrFromString(parm) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___MOUNT_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(mtm), uintptr(parmlen), uintptr(unsafe.Pointer(_p3))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func unmount_LE(filesystem string, mtm int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(filesystem) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___UMOUNT_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(mtm)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___CHROOT_A<<4, uintptr(unsafe.Pointer(_p0))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nmsgsfds int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (ret int, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SELECT<<4, uintptr(nmsgsfds), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout))) + runtime.ExitSyscall() + ret = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Uname(buf *Utsname) (err error) { + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_____OSNAME_A<<4, uintptr(unsafe.Pointer(buf))) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Unshare(flags int) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_UNSHARE<<4, uintptr(flags)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_UnshareAddr() *(func(flags int) (err error)) + +var Unshare = enter_Unshare + +func enter_Unshare(flags int) (err error) { + funcref := get_UnshareAddr() + if funcptrtest(GetZosLibVec()+SYS_UNSHARE<<4, "") == 0 { + *funcref = impl_Unshare + } else { + *funcref = error_Unshare + } + return (*funcref)(flags) +} + +func error_Unshare(flags int) (err error) { + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gethostname(buf []byte) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___GETHOSTNAME_A<<4, uintptr(_p0), uintptr(len(buf))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := CallLeFuncWithErr(GetZosLibVec() + SYS_GETGID<<4) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := CallLeFuncWithErr(GetZosLibVec() + SYS_GETPID<<4) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_GETPGID<<4, uintptr(pid)) + pgid = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (pid int) { + r0, _, _ := CallLeFuncWithErr(GetZosLibVec() + SYS_GETPPID<<4) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_GETPRIORITY<<4, uintptr(which), uintptr(who)) + runtime.ExitSyscall() + prio = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_GETRLIMIT<<4, uintptr(resource), uintptr(unsafe.Pointer(rlim))) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getrusage(who int, rusage *rusage_zos) (err error) { + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_GETRUSAGE<<4, uintptr(who), uintptr(unsafe.Pointer(rusage))) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + runtime.EnterSyscall() + r0, _, _ := CallLeFuncWithErr(GetZosLibVec() + SYS_GETEGID<<4) + runtime.ExitSyscall() + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + runtime.EnterSyscall() + r0, _, _ := CallLeFuncWithErr(GetZosLibVec() + SYS_GETEUID<<4) + runtime.ExitSyscall() + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_GETSID<<4, uintptr(pid)) + sid = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := CallLeFuncWithErr(GetZosLibVec() + SYS_GETUID<<4) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, sig Signal) (err error) { + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_KILL<<4, uintptr(pid), uintptr(sig)) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___LCHOWN_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___LINK_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Linkat(oldDirFd int, oldPath string, newDirFd int, newPath string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldPath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newPath) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___LINKAT_A<<4, uintptr(oldDirFd), uintptr(unsafe.Pointer(_p0)), uintptr(newDirFd), uintptr(unsafe.Pointer(_p1)), uintptr(flags)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_LinkatAddr() *(func(oldDirFd int, oldPath string, newDirFd int, newPath string, flags int) (err error)) + +var Linkat = enter_Linkat + +func enter_Linkat(oldDirFd int, oldPath string, newDirFd int, newPath string, flags int) (err error) { + funcref := get_LinkatAddr() + if funcptrtest(GetZosLibVec()+SYS___LINKAT_A<<4, "") == 0 { + *funcref = impl_Linkat + } else { + *funcref = error_Linkat + } + return (*funcref)(oldDirFd, oldPath, newDirFd, newPath, flags) +} + +func error_Linkat(oldDirFd int, oldPath string, newDirFd int, newPath string, flags int) (err error) { + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_LISTEN<<4, uintptr(s), uintptr(n)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func lstat(path string, stat *Stat_LE_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___LSTAT_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___MKDIR_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___MKDIRAT_A<<4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_MkdiratAddr() *(func(dirfd int, path string, mode uint32) (err error)) + +var Mkdirat = enter_Mkdirat + +func enter_Mkdirat(dirfd int, path string, mode uint32) (err error) { + funcref := get_MkdiratAddr() + if funcptrtest(GetZosLibVec()+SYS___MKDIRAT_A<<4, "") == 0 { + *funcref = impl_Mkdirat + } else { + *funcref = error_Mkdirat + } + return (*funcref)(dirfd, path, mode) +} + +func error_Mkdirat(dirfd int, path string, mode uint32) (err error) { + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___MKFIFO_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___MKNOD_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___MKNODAT_A<<4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_MknodatAddr() *(func(dirfd int, path string, mode uint32, dev int) (err error)) + +var Mknodat = enter_Mknodat + +func enter_Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + funcref := get_MknodatAddr() + if funcptrtest(GetZosLibVec()+SYS___MKNODAT_A<<4, "") == 0 { + *funcref = impl_Mknodat + } else { + *funcref = error_Mknodat + } + return (*funcref)(dirfd, path, mode, dev) +} + +func error_Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_PivotRoot(newroot string, oldroot string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(newroot) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(oldroot) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___PIVOT_ROOT_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_PivotRootAddr() *(func(newroot string, oldroot string) (err error)) + +var PivotRoot = enter_PivotRoot + +func enter_PivotRoot(newroot string, oldroot string) (err error) { + funcref := get_PivotRootAddr() + if funcptrtest(GetZosLibVec()+SYS___PIVOT_ROOT_A<<4, "") == 0 { + *funcref = impl_PivotRoot + } else { + *funcref = error_PivotRoot + } + return (*funcref)(newroot, oldroot) +} + +func error_PivotRoot(newroot string, oldroot string) (err error) { + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_PREAD<<4, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset)) + runtime.ExitSyscall() + n = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } return } // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Getpriority(which int, who int) (prio int, err error) { - r0, _, e1 := syscall_syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) - prio = int(r0) - if e1 != 0 { - err = errnoErr(e1) +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_PWRITE<<4, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset)) + runtime.ExitSyscall() + n = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) } return } // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Getrlimit(resource int, rlim *Rlimit) (err error) { - _, _, e1 := syscall_rawsyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) - if e1 != 0 { - err = errnoErr(e1) +func impl_Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___PRCTL_A<<4, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) } return } -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +//go:nosplit +func get_PrctlAddr() *(func(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error)) -func getrusage(who int, rusage *rusage_zos) (err error) { - _, _, e1 := syscall_rawsyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) - if e1 != 0 { - err = errnoErr(e1) +var Prctl = enter_Prctl + +func enter_Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) { + funcref := get_PrctlAddr() + if funcptrtest(GetZosLibVec()+SYS___PRCTL_A<<4, "") == 0 { + *funcref = impl_Prctl + } else { + *funcref = error_Prctl } - return + return (*funcref)(option, arg2, arg3, arg4, arg5) } -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Getsid(pid int) (sid int, err error) { - r0, _, e1 := syscall_rawsyscall(SYS_GETSID, uintptr(pid), 0, 0) - sid = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } +func error_Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) { + err = ENOSYS return } // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Getuid() (uid int) { - r0, _, _ := syscall_rawsyscall(SYS_GETUID, 0, 0, 0) - uid = int(r0) +func impl_Prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) { + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_PRLIMIT<<4, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old))) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } return } -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +//go:nosplit +func get_PrlimitAddr() *(func(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error)) -func Kill(pid int, sig Signal) (err error) { - _, _, e1 := syscall_rawsyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0) - if e1 != 0 { - err = errnoErr(e1) +var Prlimit = enter_Prlimit + +func enter_Prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) { + funcref := get_PrlimitAddr() + if funcptrtest(GetZosLibVec()+SYS_PRLIMIT<<4, "") == 0 { + *funcref = impl_Prlimit + } else { + *funcref = error_Prlimit } + return (*funcref)(pid, resource, newlimit, old) +} + +func error_Prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) { + err = ENOSYS return } // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Lchown(path string, uid int, gid int) (err error) { +func Rename(from string, to string) (err error) { var _p0 *byte - _p0, err = BytePtrFromString(path) + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) if err != nil { return } - _, _, e1 := syscall_syscall(SYS___LCHOWN_A, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) - if e1 != 0 { - err = errnoErr(e1) + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___RENAME_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) } return } // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Link(path string, link string) (err error) { +func impl_Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { var _p0 *byte - _p0, err = BytePtrFromString(path) + _p0, err = BytePtrFromString(oldpath) if err != nil { return } var _p1 *byte - _p1, err = BytePtrFromString(link) + _p1, err = BytePtrFromString(newpath) if err != nil { return } - _, _, e1 := syscall_syscall(SYS___LINK_A, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) - if e1 != 0 { - err = errnoErr(e1) + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___RENAMEAT_A<<4, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) } return } -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +//go:nosplit +func get_RenameatAddr() *(func(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)) -func Listen(s int, n int) (err error) { - _, _, e1 := syscall_syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0) - if e1 != 0 { - err = errnoErr(e1) +var Renameat = enter_Renameat + +func enter_Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + funcref := get_RenameatAddr() + if funcptrtest(GetZosLibVec()+SYS___RENAMEAT_A<<4, "") == 0 { + *funcref = impl_Renameat + } else { + *funcref = error_Renameat } + return (*funcref)(olddirfd, oldpath, newdirfd, newpath) +} + +func error_Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + err = ENOSYS return } // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func lstat(path string, stat *Stat_LE_t) (err error) { +func impl_Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) { var _p0 *byte - _p0, err = BytePtrFromString(path) + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) if err != nil { return } - _, _, e1 := syscall_syscall(SYS___LSTAT_A, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) - if e1 != 0 { - err = errnoErr(e1) + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___RENAMEAT2_A<<4, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) } return } -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +//go:nosplit +func get_Renameat2Addr() *(func(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error)) -func Mkdir(path string, mode uint32) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := syscall_syscall(SYS___MKDIR_A, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) - if e1 != 0 { - err = errnoErr(e1) +var Renameat2 = enter_Renameat2 + +func enter_Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) { + funcref := get_Renameat2Addr() + if funcptrtest(GetZosLibVec()+SYS___RENAMEAT2_A<<4, "") == 0 { + *funcref = impl_Renameat2 + } else { + *funcref = error_Renameat2 } + return (*funcref)(olddirfd, oldpath, newdirfd, newpath, flags) +} + +func error_Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) { + err = ENOSYS return } // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Mkfifo(path string, mode uint32) (err error) { +func Rmdir(path string) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) if err != nil { return } - _, _, e1 := syscall_syscall(SYS___MKFIFO_A, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) - if e1 != 0 { - err = errnoErr(e1) + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___RMDIR_A<<4, uintptr(unsafe.Pointer(_p0))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) } return } // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Mknod(path string, mode uint32, dev int) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := syscall_syscall(SYS___MKNOD_A, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) - if e1 != 0 { - err = errnoErr(e1) +func Seek(fd int, offset int64, whence int) (off int64, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_LSEEK<<4, uintptr(fd), uintptr(offset), uintptr(whence)) + runtime.ExitSyscall() + off = int64(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) } return } // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Pread(fd int, p []byte, offset int64) (n int, err error) { - var _p0 unsafe.Pointer - if len(p) > 0 { - _p0 = unsafe.Pointer(&p[0]) - } else { - _p0 = unsafe.Pointer(&_zero) +func Setegid(egid int) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SETEGID<<4, uintptr(egid)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) } - r0, _, e1 := syscall_syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SETEUID<<4, uintptr(euid)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) } return } // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Pwrite(fd int, p []byte, offset int64) (n int, err error) { +func impl_Sethostname(p []byte) (err error) { var _p0 unsafe.Pointer if len(p) > 0 { _p0 = unsafe.Pointer(&p[0]) } else { _p0 = unsafe.Pointer(&_zero) } - r0, _, e1 := syscall_syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___SETHOSTNAME_A<<4, uintptr(_p0), uintptr(len(p))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) } return } -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +//go:nosplit +func get_SethostnameAddr() *(func(p []byte) (err error)) -func Readlink(path string, buf []byte) (n int, err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - var _p1 unsafe.Pointer - if len(buf) > 0 { - _p1 = unsafe.Pointer(&buf[0]) +var Sethostname = enter_Sethostname + +func enter_Sethostname(p []byte) (err error) { + funcref := get_SethostnameAddr() + if funcptrtest(GetZosLibVec()+SYS___SETHOSTNAME_A<<4, "") == 0 { + *funcref = impl_Sethostname } else { - _p1 = unsafe.Pointer(&_zero) + *funcref = error_Sethostname } - r0, _, e1 := syscall_syscall(SYS___READLINK_A, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return + return (*funcref)(p) } -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Rename(from string, to string) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(from) - if err != nil { - return - } - var _p1 *byte - _p1, err = BytePtrFromString(to) - if err != nil { - return - } - _, _, e1 := syscall_syscall(SYS___RENAME_A, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) - if e1 != 0 { - err = errnoErr(e1) - } +func error_Sethostname(p []byte) (err error) { + err = ENOSYS return } // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Rmdir(path string) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := syscall_syscall(SYS___RMDIR_A, uintptr(unsafe.Pointer(_p0)), 0, 0) - if e1 != 0 { - err = errnoErr(e1) +func impl_Setns(fd int, nstype int) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SETNS<<4, uintptr(fd), uintptr(nstype)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) } return } -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +//go:nosplit +func get_SetnsAddr() *(func(fd int, nstype int) (err error)) -func Seek(fd int, offset int64, whence int) (off int64, err error) { - r0, _, e1 := syscall_syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence)) - off = int64(r0) - if e1 != 0 { - err = errnoErr(e1) +var Setns = enter_Setns + +func enter_Setns(fd int, nstype int) (err error) { + funcref := get_SetnsAddr() + if funcptrtest(GetZosLibVec()+SYS_SETNS<<4, "") == 0 { + *funcref = impl_Setns + } else { + *funcref = error_Setns } + return (*funcref)(fd, nstype) +} + +func error_Setns(fd int, nstype int) (err error) { + err = ENOSYS return } // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Setpriority(which int, who int, prio int) (err error) { - _, _, e1 := syscall_syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) - if e1 != 0 { - err = errnoErr(e1) + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SETPRIORITY<<4, uintptr(which), uintptr(who), uintptr(prio)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) } return } @@ -971,9 +2910,9 @@ func Setpriority(which int, who int, prio int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Setpgid(pid int, pgid int) (err error) { - _, _, e1 := syscall_rawsyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) - if e1 != 0 { - err = errnoErr(e1) + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SETPGID<<4, uintptr(pid), uintptr(pgid)) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) } return } @@ -981,9 +2920,9 @@ func Setpgid(pid int, pgid int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Setrlimit(resource int, lim *Rlimit) (err error) { - _, _, e1 := syscall_rawsyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(lim)), 0) - if e1 != 0 { - err = errnoErr(e1) + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SETRLIMIT<<4, uintptr(resource), uintptr(unsafe.Pointer(lim))) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) } return } @@ -991,9 +2930,9 @@ func Setrlimit(resource int, lim *Rlimit) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Setregid(rgid int, egid int) (err error) { - _, _, e1 := syscall_rawsyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) - if e1 != 0 { - err = errnoErr(e1) + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SETREGID<<4, uintptr(rgid), uintptr(egid)) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) } return } @@ -1001,9 +2940,9 @@ func Setregid(rgid int, egid int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Setreuid(ruid int, euid int) (err error) { - _, _, e1 := syscall_rawsyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) - if e1 != 0 { - err = errnoErr(e1) + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SETREUID<<4, uintptr(ruid), uintptr(euid)) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) } return } @@ -1011,10 +2950,10 @@ func Setreuid(ruid int, euid int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Setsid() (pid int, err error) { - r0, _, e1 := syscall_rawsyscall(SYS_SETSID, 0, 0, 0) + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec() + SYS_SETSID<<4) pid = int(r0) - if e1 != 0 { - err = errnoErr(e1) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) } return } @@ -1022,9 +2961,11 @@ func Setsid() (pid int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Setuid(uid int) (err error) { - _, _, e1 := syscall_syscall(SYS_SETUID, uintptr(uid), 0, 0) - if e1 != 0 { - err = errnoErr(e1) + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SETUID<<4, uintptr(uid)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) } return } @@ -1032,9 +2973,11 @@ func Setuid(uid int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Setgid(uid int) (err error) { - _, _, e1 := syscall_syscall(SYS_SETGID, uintptr(uid), 0, 0) - if e1 != 0 { - err = errnoErr(e1) + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SETGID<<4, uintptr(uid)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) } return } @@ -1042,9 +2985,11 @@ func Setgid(uid int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Shutdown(fd int, how int) (err error) { - _, _, e1 := syscall_syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) - if e1 != 0 { - err = errnoErr(e1) + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SHUTDOWN<<4, uintptr(fd), uintptr(how)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) } return } @@ -1057,9 +3002,11 @@ func stat(path string, statLE *Stat_LE_t) (err error) { if err != nil { return } - _, _, e1 := syscall_syscall(SYS___STAT_A, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(statLE)), 0) - if e1 != 0 { - err = errnoErr(e1) + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___STAT_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(statLE))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) } return } @@ -1077,17 +3024,63 @@ func Symlink(path string, link string) (err error) { if err != nil { return } - _, _, e1 := syscall_syscall(SYS___SYMLINK_A, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) - if e1 != 0 { - err = errnoErr(e1) + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___SYMLINK_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Symlinkat(oldPath string, dirfd int, newPath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldPath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newPath) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___SYMLINKAT_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(dirfd), uintptr(unsafe.Pointer(_p1))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) } return } +//go:nosplit +func get_SymlinkatAddr() *(func(oldPath string, dirfd int, newPath string) (err error)) + +var Symlinkat = enter_Symlinkat + +func enter_Symlinkat(oldPath string, dirfd int, newPath string) (err error) { + funcref := get_SymlinkatAddr() + if funcptrtest(GetZosLibVec()+SYS___SYMLINKAT_A<<4, "") == 0 { + *funcref = impl_Symlinkat + } else { + *funcref = error_Symlinkat + } + return (*funcref)(oldPath, dirfd, newPath) +} + +func error_Symlinkat(oldPath string, dirfd int, newPath string) (err error) { + err = ENOSYS + return +} + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Sync() { - syscall_syscall(SYS_SYNC, 0, 0, 0) + runtime.EnterSyscall() + CallLeFuncWithErr(GetZosLibVec() + SYS_SYNC<<4) + runtime.ExitSyscall() return } @@ -1099,9 +3092,11 @@ func Truncate(path string, length int64) (err error) { if err != nil { return } - _, _, e1 := syscall_syscall(SYS___TRUNCATE_A, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) - if e1 != 0 { - err = errnoErr(e1) + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___TRUNCATE_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(length)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) } return } @@ -1109,9 +3104,11 @@ func Truncate(path string, length int64) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Tcgetattr(fildes int, termptr *Termios) (err error) { - _, _, e1 := syscall_syscall(SYS_TCGETATTR, uintptr(fildes), uintptr(unsafe.Pointer(termptr)), 0) - if e1 != 0 { - err = errnoErr(e1) + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_TCGETATTR<<4, uintptr(fildes), uintptr(unsafe.Pointer(termptr))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) } return } @@ -1119,9 +3116,11 @@ func Tcgetattr(fildes int, termptr *Termios) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Tcsetattr(fildes int, when int, termptr *Termios) (err error) { - _, _, e1 := syscall_syscall(SYS_TCSETATTR, uintptr(fildes), uintptr(when), uintptr(unsafe.Pointer(termptr))) - if e1 != 0 { - err = errnoErr(e1) + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_TCSETATTR<<4, uintptr(fildes), uintptr(when), uintptr(unsafe.Pointer(termptr))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) } return } @@ -1129,7 +3128,9 @@ func Tcsetattr(fildes int, when int, termptr *Termios) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Umask(mask int) (oldmask int) { - r0, _, _ := syscall_syscall(SYS_UMASK, uintptr(mask), 0, 0) + runtime.EnterSyscall() + r0, _, _ := CallLeFuncWithErr(GetZosLibVec()+SYS_UMASK<<4, uintptr(mask)) + runtime.ExitSyscall() oldmask = int(r0) return } @@ -1142,10 +3143,49 @@ func Unlink(path string) (err error) { if err != nil { return } - _, _, e1 := syscall_syscall(SYS___UNLINK_A, uintptr(unsafe.Pointer(_p0)), 0, 0) - if e1 != 0 { - err = errnoErr(e1) + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___UNLINK_A<<4, uintptr(unsafe.Pointer(_p0))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___UNLINKAT_A<<4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_UnlinkatAddr() *(func(dirfd int, path string, flags int) (err error)) + +var Unlinkat = enter_Unlinkat + +func enter_Unlinkat(dirfd int, path string, flags int) (err error) { + funcref := get_UnlinkatAddr() + if funcptrtest(GetZosLibVec()+SYS___UNLINKAT_A<<4, "") == 0 { + *funcref = impl_Unlinkat + } else { + *funcref = error_Unlinkat } + return (*funcref)(dirfd, path, flags) +} + +func error_Unlinkat(dirfd int, path string, flags int) (err error) { + err = ENOSYS return } @@ -1157,9 +3197,11 @@ func Utime(path string, utim *Utimbuf) (err error) { if err != nil { return } - _, _, e1 := syscall_syscall(SYS___UTIME_A, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(utim)), 0) - if e1 != 0 { - err = errnoErr(e1) + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___UTIME_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(utim))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) } return } @@ -1172,11 +3214,91 @@ func open(path string, mode int, perm uint32) (fd int, err error) { if err != nil { return } - r0, _, e1 := syscall_syscall(SYS___OPEN_A, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___OPEN_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + runtime.ExitSyscall() + fd = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___OPENAT_A<<4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode)) + runtime.ExitSyscall() + fd = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_openatAddr() *(func(dirfd int, path string, flags int, mode uint32) (fd int, err error)) + +var openat = enter_openat + +func enter_openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) { + funcref := get_openatAddr() + if funcptrtest(GetZosLibVec()+SYS___OPENAT_A<<4, "") == 0 { + *funcref = impl_openat + } else { + *funcref = error_openat + } + return (*funcref)(dirfd, path, flags, mode) +} + +func error_openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) { + fd = -1 + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_openat2(dirfd int, path string, open_how *OpenHow, size int) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___OPENAT2_A<<4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(open_how)), uintptr(size)) + runtime.ExitSyscall() fd = int(r0) - if e1 != 0 { - err = errnoErr(e1) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_openat2Addr() *(func(dirfd int, path string, open_how *OpenHow, size int) (fd int, err error)) + +var openat2 = enter_openat2 + +func enter_openat2(dirfd int, path string, open_how *OpenHow, size int) (fd int, err error) { + funcref := get_openat2Addr() + if funcptrtest(GetZosLibVec()+SYS___OPENAT2_A<<4, "") == 0 { + *funcref = impl_openat2 + } else { + *funcref = error_openat2 } + return (*funcref)(dirfd, path, open_how, size) +} + +func error_openat2(dirfd int, path string, open_how *OpenHow, size int) (fd int, err error) { + fd = -1 + err = ENOSYS return } @@ -1188,9 +3310,23 @@ func remove(path string) (err error) { if err != nil { return } - _, _, e1 := syscall_syscall(SYS_REMOVE, uintptr(unsafe.Pointer(_p0)), 0, 0) - if e1 != 0 { - err = errnoErr(e1) + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_REMOVE<<4, uintptr(unsafe.Pointer(_p0))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func waitid(idType int, id int, info *Siginfo, options int) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_WAITID<<4, uintptr(idType), uintptr(id), uintptr(unsafe.Pointer(info)), uintptr(options)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) } return } @@ -1198,10 +3334,12 @@ func remove(path string) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func waitpid(pid int, wstatus *_C_int, options int) (wpid int, err error) { - r0, _, e1 := syscall_syscall(SYS_WAITPID, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options)) + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_WAITPID<<4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options)) + runtime.ExitSyscall() wpid = int(r0) - if e1 != 0 { - err = errnoErr(e1) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) } return } @@ -1209,9 +3347,9 @@ func waitpid(pid int, wstatus *_C_int, options int) (wpid int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func gettimeofday(tv *timeval_zos) (err error) { - _, _, e1 := syscall_rawsyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) - if e1 != 0 { - err = errnoErr(e1) + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_GETTIMEOFDAY<<4, uintptr(unsafe.Pointer(tv))) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) } return } @@ -1219,9 +3357,9 @@ func gettimeofday(tv *timeval_zos) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func pipe(p *[2]_C_int) (err error) { - _, _, e1 := syscall_rawsyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0) - if e1 != 0 { - err = errnoErr(e1) + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_PIPE<<4, uintptr(unsafe.Pointer(p))) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) } return } @@ -1234,20 +3372,87 @@ func utimes(path string, timeval *[2]Timeval) (err error) { if err != nil { return } - _, _, e1 := syscall_syscall(SYS___UTIMES_A, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) - if e1 != 0 { - err = errnoErr(e1) + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___UTIMES_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) } return } // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Select(nmsgsfds int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (ret int, err error) { - r0, _, e1 := syscall_syscall6(SYS_SELECT, uintptr(nmsgsfds), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) - ret = int(r0) - if e1 != 0 { - err = errnoErr(e1) +func impl_utimensat(dirfd int, path string, ts *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___UTIMENSAT_A<<4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(ts)), uintptr(flags)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_utimensatAddr() *(func(dirfd int, path string, ts *[2]Timespec, flags int) (err error)) + +var utimensat = enter_utimensat + +func enter_utimensat(dirfd int, path string, ts *[2]Timespec, flags int) (err error) { + funcref := get_utimensatAddr() + if funcptrtest(GetZosLibVec()+SYS___UTIMENSAT_A<<4, "") == 0 { + *funcref = impl_utimensat + } else { + *funcref = error_utimensat + } + return (*funcref)(dirfd, path, ts, flags) +} + +func error_utimensat(dirfd int, path string, ts *[2]Timespec, flags int) (err error) { + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Posix_openpt(oflag int) (fd int, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_POSIX_OPENPT<<4, uintptr(oflag)) + runtime.ExitSyscall() + fd = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Grantpt(fildes int) (rc int, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_GRANTPT<<4, uintptr(fildes)) + runtime.ExitSyscall() + rc = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlockpt(fildes int) (rc int, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_UNLOCKPT<<4, uintptr(fildes)) + runtime.ExitSyscall() + rc = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) } return } diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go index 0cc3ce496..53aef5dc5 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go @@ -452,4 +452,9 @@ const ( SYS_FUTEX_WAKE = 454 SYS_FUTEX_WAIT = 455 SYS_FUTEX_REQUEUE = 456 + SYS_STATMOUNT = 457 + SYS_LISTMOUNT = 458 + SYS_LSM_GET_SELF_ATTR = 459 + SYS_LSM_SET_SELF_ATTR = 460 + SYS_LSM_LIST_MODULES = 461 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go index 856d92d69..71d524763 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go @@ -374,4 +374,9 @@ const ( SYS_FUTEX_WAKE = 454 SYS_FUTEX_WAIT = 455 SYS_FUTEX_REQUEUE = 456 + SYS_STATMOUNT = 457 + SYS_LISTMOUNT = 458 + SYS_LSM_GET_SELF_ATTR = 459 + SYS_LSM_SET_SELF_ATTR = 460 + SYS_LSM_LIST_MODULES = 461 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go index 8d467094c..c74770613 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go @@ -416,4 +416,9 @@ const ( SYS_FUTEX_WAKE = 454 SYS_FUTEX_WAIT = 455 SYS_FUTEX_REQUEUE = 456 + SYS_STATMOUNT = 457 + SYS_LISTMOUNT = 458 + SYS_LSM_GET_SELF_ATTR = 459 + SYS_LSM_SET_SELF_ATTR = 460 + SYS_LSM_LIST_MODULES = 461 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go index edc173244..f96e214f6 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go @@ -319,4 +319,9 @@ const ( SYS_FUTEX_WAKE = 454 SYS_FUTEX_WAIT = 455 SYS_FUTEX_REQUEUE = 456 + SYS_STATMOUNT = 457 + SYS_LISTMOUNT = 458 + SYS_LSM_GET_SELF_ATTR = 459 + SYS_LSM_SET_SELF_ATTR = 460 + SYS_LSM_LIST_MODULES = 461 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_loong64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_loong64.go index 445eba206..28425346c 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_loong64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_loong64.go @@ -313,4 +313,9 @@ const ( SYS_FUTEX_WAKE = 454 SYS_FUTEX_WAIT = 455 SYS_FUTEX_REQUEUE = 456 + SYS_STATMOUNT = 457 + SYS_LISTMOUNT = 458 + SYS_LSM_GET_SELF_ATTR = 459 + SYS_LSM_SET_SELF_ATTR = 460 + SYS_LSM_LIST_MODULES = 461 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go index adba01bca..d0953018d 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go @@ -436,4 +436,9 @@ const ( SYS_FUTEX_WAKE = 4454 SYS_FUTEX_WAIT = 4455 SYS_FUTEX_REQUEUE = 4456 + SYS_STATMOUNT = 4457 + SYS_LISTMOUNT = 4458 + SYS_LSM_GET_SELF_ATTR = 4459 + SYS_LSM_SET_SELF_ATTR = 4460 + SYS_LSM_LIST_MODULES = 4461 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go index 014c4e9c7..295c7f4b8 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go @@ -366,4 +366,9 @@ const ( SYS_FUTEX_WAKE = 5454 SYS_FUTEX_WAIT = 5455 SYS_FUTEX_REQUEUE = 5456 + SYS_STATMOUNT = 5457 + SYS_LISTMOUNT = 5458 + SYS_LSM_GET_SELF_ATTR = 5459 + SYS_LSM_SET_SELF_ATTR = 5460 + SYS_LSM_LIST_MODULES = 5461 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go index ccc97d74d..d1a9eaca7 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go @@ -366,4 +366,9 @@ const ( SYS_FUTEX_WAKE = 5454 SYS_FUTEX_WAIT = 5455 SYS_FUTEX_REQUEUE = 5456 + SYS_STATMOUNT = 5457 + SYS_LISTMOUNT = 5458 + SYS_LSM_GET_SELF_ATTR = 5459 + SYS_LSM_SET_SELF_ATTR = 5460 + SYS_LSM_LIST_MODULES = 5461 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go index ec2b64a95..bec157c39 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go @@ -436,4 +436,9 @@ const ( SYS_FUTEX_WAKE = 4454 SYS_FUTEX_WAIT = 4455 SYS_FUTEX_REQUEUE = 4456 + SYS_STATMOUNT = 4457 + SYS_LISTMOUNT = 4458 + SYS_LSM_GET_SELF_ATTR = 4459 + SYS_LSM_SET_SELF_ATTR = 4460 + SYS_LSM_LIST_MODULES = 4461 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc.go index 21a839e33..7ee7bdc43 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc.go @@ -443,4 +443,9 @@ const ( SYS_FUTEX_WAKE = 454 SYS_FUTEX_WAIT = 455 SYS_FUTEX_REQUEUE = 456 + SYS_STATMOUNT = 457 + SYS_LISTMOUNT = 458 + SYS_LSM_GET_SELF_ATTR = 459 + SYS_LSM_SET_SELF_ATTR = 460 + SYS_LSM_LIST_MODULES = 461 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go index c11121ec3..fad1f25b4 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go @@ -415,4 +415,9 @@ const ( SYS_FUTEX_WAKE = 454 SYS_FUTEX_WAIT = 455 SYS_FUTEX_REQUEUE = 456 + SYS_STATMOUNT = 457 + SYS_LISTMOUNT = 458 + SYS_LSM_GET_SELF_ATTR = 459 + SYS_LSM_SET_SELF_ATTR = 460 + SYS_LSM_LIST_MODULES = 461 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go index 909b631fc..7d3e16357 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go @@ -415,4 +415,9 @@ const ( SYS_FUTEX_WAKE = 454 SYS_FUTEX_WAIT = 455 SYS_FUTEX_REQUEUE = 456 + SYS_STATMOUNT = 457 + SYS_LISTMOUNT = 458 + SYS_LSM_GET_SELF_ATTR = 459 + SYS_LSM_SET_SELF_ATTR = 460 + SYS_LSM_LIST_MODULES = 461 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go index e49bed16e..0ed53ad9f 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go @@ -320,4 +320,9 @@ const ( SYS_FUTEX_WAKE = 454 SYS_FUTEX_WAIT = 455 SYS_FUTEX_REQUEUE = 456 + SYS_STATMOUNT = 457 + SYS_LISTMOUNT = 458 + SYS_LSM_GET_SELF_ATTR = 459 + SYS_LSM_SET_SELF_ATTR = 460 + SYS_LSM_LIST_MODULES = 461 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go index 66017d2d3..2fba04ad5 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go @@ -381,4 +381,9 @@ const ( SYS_FUTEX_WAKE = 454 SYS_FUTEX_WAIT = 455 SYS_FUTEX_REQUEUE = 456 + SYS_STATMOUNT = 457 + SYS_LISTMOUNT = 458 + SYS_LSM_GET_SELF_ATTR = 459 + SYS_LSM_SET_SELF_ATTR = 460 + SYS_LSM_LIST_MODULES = 461 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go index 47bab18dc..621d00d74 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go @@ -394,4 +394,9 @@ const ( SYS_FUTEX_WAKE = 454 SYS_FUTEX_WAIT = 455 SYS_FUTEX_REQUEUE = 456 + SYS_STATMOUNT = 457 + SYS_LISTMOUNT = 458 + SYS_LSM_GET_SELF_ATTR = 459 + SYS_LSM_SET_SELF_ATTR = 460 + SYS_LSM_LIST_MODULES = 461 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_zos_s390x.go b/vendor/golang.org/x/sys/unix/zsysnum_zos_s390x.go index b2e308581..5e8c263ca 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_zos_s390x.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_zos_s390x.go @@ -1,2669 +1,2852 @@ -// Copyright 2020 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. +// go run mksyscall_zos_s390x.go -o_sysnum zsysnum_zos_s390x.go -o_syscall zsyscall_zos_s390x.go -i_syscall syscall_zos_s390x.go -o_asm zsymaddr_zos_s390x.s +// Code generated by the command above; see README.md. DO NOT EDIT. //go:build zos && s390x package unix -// TODO: auto-generate. - const ( - SYS_ACOSD128 = 0xB80 - SYS_ACOSD32 = 0xB7E - SYS_ACOSD64 = 0xB7F - SYS_ACOSHD128 = 0xB83 - SYS_ACOSHD32 = 0xB81 - SYS_ACOSHD64 = 0xB82 - SYS_AIO_FSYNC = 0xC69 - SYS_ASCTIME = 0x0AE - SYS_ASCTIME64 = 0xCD7 - SYS_ASCTIME64_R = 0xCD8 - SYS_ASIND128 = 0xB86 - SYS_ASIND32 = 0xB84 - SYS_ASIND64 = 0xB85 - SYS_ASINHD128 = 0xB89 - SYS_ASINHD32 = 0xB87 - SYS_ASINHD64 = 0xB88 - SYS_ATAN2D128 = 0xB8F - SYS_ATAN2D32 = 0xB8D - SYS_ATAN2D64 = 0xB8E - SYS_ATAND128 = 0xB8C - SYS_ATAND32 = 0xB8A - SYS_ATAND64 = 0xB8B - SYS_ATANHD128 = 0xB92 - SYS_ATANHD32 = 0xB90 - SYS_ATANHD64 = 0xB91 - SYS_BIND2ADDRSEL = 0xD59 - SYS_C16RTOMB = 0xD40 - SYS_C32RTOMB = 0xD41 - SYS_CBRTD128 = 0xB95 - SYS_CBRTD32 = 0xB93 - SYS_CBRTD64 = 0xB94 - SYS_CEILD128 = 0xB98 - SYS_CEILD32 = 0xB96 - SYS_CEILD64 = 0xB97 - SYS_CLEARENV = 0x0C9 - SYS_CLEARERR_UNLOCKED = 0xCA1 - SYS_CLOCK = 0x0AA - SYS_CLOGL = 0xA00 - SYS_CLRMEMF = 0x0BD - SYS_CONJ = 0xA03 - SYS_CONJF = 0xA06 - SYS_CONJL = 0xA09 - SYS_COPYSIGND128 = 0xB9E - SYS_COPYSIGND32 = 0xB9C - SYS_COPYSIGND64 = 0xB9D - SYS_COSD128 = 0xBA1 - SYS_COSD32 = 0xB9F - SYS_COSD64 = 0xBA0 - SYS_COSHD128 = 0xBA4 - SYS_COSHD32 = 0xBA2 - SYS_COSHD64 = 0xBA3 - SYS_CPOW = 0xA0C - SYS_CPOWF = 0xA0F - SYS_CPOWL = 0xA12 - SYS_CPROJ = 0xA15 - SYS_CPROJF = 0xA18 - SYS_CPROJL = 0xA1B - SYS_CREAL = 0xA1E - SYS_CREALF = 0xA21 - SYS_CREALL = 0xA24 - SYS_CSIN = 0xA27 - SYS_CSINF = 0xA2A - SYS_CSINH = 0xA30 - SYS_CSINHF = 0xA33 - SYS_CSINHL = 0xA36 - SYS_CSINL = 0xA2D - SYS_CSNAP = 0x0C5 - SYS_CSQRT = 0xA39 - SYS_CSQRTF = 0xA3C - SYS_CSQRTL = 0xA3F - SYS_CTAN = 0xA42 - SYS_CTANF = 0xA45 - SYS_CTANH = 0xA4B - SYS_CTANHF = 0xA4E - SYS_CTANHL = 0xA51 - SYS_CTANL = 0xA48 - SYS_CTIME = 0x0AB - SYS_CTIME64 = 0xCD9 - SYS_CTIME64_R = 0xCDA - SYS_CTRACE = 0x0C6 - SYS_DIFFTIME = 0x0A7 - SYS_DIFFTIME64 = 0xCDB - SYS_DLADDR = 0xC82 - SYS_DYNALLOC = 0x0C3 - SYS_DYNFREE = 0x0C2 - SYS_ERFCD128 = 0xBAA - SYS_ERFCD32 = 0xBA8 - SYS_ERFCD64 = 0xBA9 - SYS_ERFD128 = 0xBA7 - SYS_ERFD32 = 0xBA5 - SYS_ERFD64 = 0xBA6 - SYS_EXP2D128 = 0xBB0 - SYS_EXP2D32 = 0xBAE - SYS_EXP2D64 = 0xBAF - SYS_EXPD128 = 0xBAD - SYS_EXPD32 = 0xBAB - SYS_EXPD64 = 0xBAC - SYS_EXPM1D128 = 0xBB3 - SYS_EXPM1D32 = 0xBB1 - SYS_EXPM1D64 = 0xBB2 - SYS_FABSD128 = 0xBB6 - SYS_FABSD32 = 0xBB4 - SYS_FABSD64 = 0xBB5 - SYS_FDELREC_UNLOCKED = 0xCA2 - SYS_FDIMD128 = 0xBB9 - SYS_FDIMD32 = 0xBB7 - SYS_FDIMD64 = 0xBB8 - SYS_FDOPEN_UNLOCKED = 0xCFC - SYS_FECLEAREXCEPT = 0xAEA - SYS_FEGETENV = 0xAEB - SYS_FEGETEXCEPTFLAG = 0xAEC - SYS_FEGETROUND = 0xAED - SYS_FEHOLDEXCEPT = 0xAEE - SYS_FEOF_UNLOCKED = 0xCA3 - SYS_FERAISEEXCEPT = 0xAEF - SYS_FERROR_UNLOCKED = 0xCA4 - SYS_FESETENV = 0xAF0 - SYS_FESETEXCEPTFLAG = 0xAF1 - SYS_FESETROUND = 0xAF2 - SYS_FETCHEP = 0x0BF - SYS_FETESTEXCEPT = 0xAF3 - SYS_FEUPDATEENV = 0xAF4 - SYS_FE_DEC_GETROUND = 0xBBA - SYS_FE_DEC_SETROUND = 0xBBB - SYS_FFLUSH_UNLOCKED = 0xCA5 - SYS_FGETC_UNLOCKED = 0xC80 - SYS_FGETPOS64 = 0xCEE - SYS_FGETPOS64_UNLOCKED = 0xCF4 - SYS_FGETPOS_UNLOCKED = 0xCA6 - SYS_FGETS_UNLOCKED = 0xC7C - SYS_FGETWC_UNLOCKED = 0xCA7 - SYS_FGETWS_UNLOCKED = 0xCA8 - SYS_FILENO_UNLOCKED = 0xCA9 - SYS_FLDATA = 0x0C1 - SYS_FLDATA_UNLOCKED = 0xCAA - SYS_FLOCATE_UNLOCKED = 0xCAB - SYS_FLOORD128 = 0xBBE - SYS_FLOORD32 = 0xBBC - SYS_FLOORD64 = 0xBBD - SYS_FMA = 0xA63 - SYS_FMAD128 = 0xBC1 - SYS_FMAD32 = 0xBBF - SYS_FMAD64 = 0xBC0 - SYS_FMAF = 0xA66 - SYS_FMAL = 0xA69 - SYS_FMAX = 0xA6C - SYS_FMAXD128 = 0xBC4 - SYS_FMAXD32 = 0xBC2 - SYS_FMAXD64 = 0xBC3 - SYS_FMAXF = 0xA6F - SYS_FMAXL = 0xA72 - SYS_FMIN = 0xA75 - SYS_FMIND128 = 0xBC7 - SYS_FMIND32 = 0xBC5 - SYS_FMIND64 = 0xBC6 - SYS_FMINF = 0xA78 - SYS_FMINL = 0xA7B - SYS_FMODD128 = 0xBCA - SYS_FMODD32 = 0xBC8 - SYS_FMODD64 = 0xBC9 - SYS_FOPEN64 = 0xD49 - SYS_FOPEN64_UNLOCKED = 0xD4A - SYS_FOPEN_UNLOCKED = 0xCFA - SYS_FPRINTF_UNLOCKED = 0xCAC - SYS_FPUTC_UNLOCKED = 0xC81 - SYS_FPUTS_UNLOCKED = 0xC7E - SYS_FPUTWC_UNLOCKED = 0xCAD - SYS_FPUTWS_UNLOCKED = 0xCAE - SYS_FREAD_NOUPDATE = 0xCEC - SYS_FREAD_NOUPDATE_UNLOCKED = 0xCED - SYS_FREAD_UNLOCKED = 0xC7B - SYS_FREEIFADDRS = 0xCE6 - SYS_FREOPEN64 = 0xD4B - SYS_FREOPEN64_UNLOCKED = 0xD4C - SYS_FREOPEN_UNLOCKED = 0xCFB - SYS_FREXPD128 = 0xBCE - SYS_FREXPD32 = 0xBCC - SYS_FREXPD64 = 0xBCD - SYS_FSCANF_UNLOCKED = 0xCAF - SYS_FSEEK64 = 0xCEF - SYS_FSEEK64_UNLOCKED = 0xCF5 - SYS_FSEEKO64 = 0xCF0 - SYS_FSEEKO64_UNLOCKED = 0xCF6 - SYS_FSEEKO_UNLOCKED = 0xCB1 - SYS_FSEEK_UNLOCKED = 0xCB0 - SYS_FSETPOS64 = 0xCF1 - SYS_FSETPOS64_UNLOCKED = 0xCF7 - SYS_FSETPOS_UNLOCKED = 0xCB3 - SYS_FTELL64 = 0xCF2 - SYS_FTELL64_UNLOCKED = 0xCF8 - SYS_FTELLO64 = 0xCF3 - SYS_FTELLO64_UNLOCKED = 0xCF9 - SYS_FTELLO_UNLOCKED = 0xCB5 - SYS_FTELL_UNLOCKED = 0xCB4 - SYS_FUPDATE = 0x0B5 - SYS_FUPDATE_UNLOCKED = 0xCB7 - SYS_FWIDE_UNLOCKED = 0xCB8 - SYS_FWPRINTF_UNLOCKED = 0xCB9 - SYS_FWRITE_UNLOCKED = 0xC7A - SYS_FWSCANF_UNLOCKED = 0xCBA - SYS_GETDATE64 = 0xD4F - SYS_GETIFADDRS = 0xCE7 - SYS_GETIPV4SOURCEFILTER = 0xC77 - SYS_GETSOURCEFILTER = 0xC79 - SYS_GETSYNTX = 0x0FD - SYS_GETS_UNLOCKED = 0xC7D - SYS_GETTIMEOFDAY64 = 0xD50 - SYS_GETWCHAR_UNLOCKED = 0xCBC - SYS_GETWC_UNLOCKED = 0xCBB - SYS_GMTIME = 0x0B0 - SYS_GMTIME64 = 0xCDC - SYS_GMTIME64_R = 0xCDD - SYS_HYPOTD128 = 0xBD1 - SYS_HYPOTD32 = 0xBCF - SYS_HYPOTD64 = 0xBD0 - SYS_ILOGBD128 = 0xBD4 - SYS_ILOGBD32 = 0xBD2 - SYS_ILOGBD64 = 0xBD3 - SYS_ILOGBF = 0xA7E - SYS_ILOGBL = 0xA81 - SYS_INET6_IS_SRCADDR = 0xD5A - SYS_ISBLANK = 0x0FE - SYS_ISWALNUM = 0x0FF - SYS_LDEXPD128 = 0xBD7 - SYS_LDEXPD32 = 0xBD5 - SYS_LDEXPD64 = 0xBD6 - SYS_LGAMMAD128 = 0xBDA - SYS_LGAMMAD32 = 0xBD8 - SYS_LGAMMAD64 = 0xBD9 - SYS_LIO_LISTIO = 0xC6A - SYS_LLRINT = 0xA84 - SYS_LLRINTD128 = 0xBDD - SYS_LLRINTD32 = 0xBDB - SYS_LLRINTD64 = 0xBDC - SYS_LLRINTF = 0xA87 - SYS_LLRINTL = 0xA8A - SYS_LLROUND = 0xA8D - SYS_LLROUNDD128 = 0xBE0 - SYS_LLROUNDD32 = 0xBDE - SYS_LLROUNDD64 = 0xBDF - SYS_LLROUNDF = 0xA90 - SYS_LLROUNDL = 0xA93 - SYS_LOCALTIM = 0x0B1 - SYS_LOCALTIME = 0x0B1 - SYS_LOCALTIME64 = 0xCDE - SYS_LOCALTIME64_R = 0xCDF - SYS_LOG10D128 = 0xBE6 - SYS_LOG10D32 = 0xBE4 - SYS_LOG10D64 = 0xBE5 - SYS_LOG1PD128 = 0xBE9 - SYS_LOG1PD32 = 0xBE7 - SYS_LOG1PD64 = 0xBE8 - SYS_LOG2D128 = 0xBEC - SYS_LOG2D32 = 0xBEA - SYS_LOG2D64 = 0xBEB - SYS_LOGBD128 = 0xBEF - SYS_LOGBD32 = 0xBED - SYS_LOGBD64 = 0xBEE - SYS_LOGBF = 0xA96 - SYS_LOGBL = 0xA99 - SYS_LOGD128 = 0xBE3 - SYS_LOGD32 = 0xBE1 - SYS_LOGD64 = 0xBE2 - SYS_LRINT = 0xA9C - SYS_LRINTD128 = 0xBF2 - SYS_LRINTD32 = 0xBF0 - SYS_LRINTD64 = 0xBF1 - SYS_LRINTF = 0xA9F - SYS_LRINTL = 0xAA2 - SYS_LROUNDD128 = 0xBF5 - SYS_LROUNDD32 = 0xBF3 - SYS_LROUNDD64 = 0xBF4 - SYS_LROUNDL = 0xAA5 - SYS_MBLEN = 0x0AF - SYS_MBRTOC16 = 0xD42 - SYS_MBRTOC32 = 0xD43 - SYS_MEMSET = 0x0A3 - SYS_MKTIME = 0x0AC - SYS_MKTIME64 = 0xCE0 - SYS_MODFD128 = 0xBF8 - SYS_MODFD32 = 0xBF6 - SYS_MODFD64 = 0xBF7 - SYS_NAN = 0xAA8 - SYS_NAND128 = 0xBFB - SYS_NAND32 = 0xBF9 - SYS_NAND64 = 0xBFA - SYS_NANF = 0xAAA - SYS_NANL = 0xAAC - SYS_NEARBYINT = 0xAAE - SYS_NEARBYINTD128 = 0xBFE - SYS_NEARBYINTD32 = 0xBFC - SYS_NEARBYINTD64 = 0xBFD - SYS_NEARBYINTF = 0xAB1 - SYS_NEARBYINTL = 0xAB4 - SYS_NEXTAFTERD128 = 0xC01 - SYS_NEXTAFTERD32 = 0xBFF - SYS_NEXTAFTERD64 = 0xC00 - SYS_NEXTAFTERF = 0xAB7 - SYS_NEXTAFTERL = 0xABA - SYS_NEXTTOWARD = 0xABD - SYS_NEXTTOWARDD128 = 0xC04 - SYS_NEXTTOWARDD32 = 0xC02 - SYS_NEXTTOWARDD64 = 0xC03 - SYS_NEXTTOWARDF = 0xAC0 - SYS_NEXTTOWARDL = 0xAC3 - SYS_NL_LANGINFO = 0x0FC - SYS_PERROR_UNLOCKED = 0xCBD - SYS_POSIX_FALLOCATE = 0xCE8 - SYS_POSIX_MEMALIGN = 0xCE9 - SYS_POSIX_OPENPT = 0xC66 - SYS_POWD128 = 0xC07 - SYS_POWD32 = 0xC05 - SYS_POWD64 = 0xC06 - SYS_PRINTF_UNLOCKED = 0xCBE - SYS_PSELECT = 0xC67 - SYS_PTHREAD_ATTR_GETSTACK = 0xB3E - SYS_PTHREAD_ATTR_SETSTACK = 0xB3F - SYS_PTHREAD_SECURITY_APPLID_NP = 0xCE4 - SYS_PUTS_UNLOCKED = 0xC7F - SYS_PUTWCHAR_UNLOCKED = 0xCC0 - SYS_PUTWC_UNLOCKED = 0xCBF - SYS_QUANTEXPD128 = 0xD46 - SYS_QUANTEXPD32 = 0xD44 - SYS_QUANTEXPD64 = 0xD45 - SYS_QUANTIZED128 = 0xC0A - SYS_QUANTIZED32 = 0xC08 - SYS_QUANTIZED64 = 0xC09 - SYS_REMAINDERD128 = 0xC0D - SYS_REMAINDERD32 = 0xC0B - SYS_REMAINDERD64 = 0xC0C - SYS_RESIZE_ALLOC = 0xCEB - SYS_REWIND_UNLOCKED = 0xCC1 - SYS_RINTD128 = 0xC13 - SYS_RINTD32 = 0xC11 - SYS_RINTD64 = 0xC12 - SYS_RINTF = 0xACB - SYS_RINTL = 0xACD - SYS_ROUND = 0xACF - SYS_ROUNDD128 = 0xC16 - SYS_ROUNDD32 = 0xC14 - SYS_ROUNDD64 = 0xC15 - SYS_ROUNDF = 0xAD2 - SYS_ROUNDL = 0xAD5 - SYS_SAMEQUANTUMD128 = 0xC19 - SYS_SAMEQUANTUMD32 = 0xC17 - SYS_SAMEQUANTUMD64 = 0xC18 - SYS_SCALBLN = 0xAD8 - SYS_SCALBLND128 = 0xC1C - SYS_SCALBLND32 = 0xC1A - SYS_SCALBLND64 = 0xC1B - SYS_SCALBLNF = 0xADB - SYS_SCALBLNL = 0xADE - SYS_SCALBND128 = 0xC1F - SYS_SCALBND32 = 0xC1D - SYS_SCALBND64 = 0xC1E - SYS_SCALBNF = 0xAE3 - SYS_SCALBNL = 0xAE6 - SYS_SCANF_UNLOCKED = 0xCC2 - SYS_SCHED_YIELD = 0xB32 - SYS_SETENV = 0x0C8 - SYS_SETIPV4SOURCEFILTER = 0xC76 - SYS_SETSOURCEFILTER = 0xC78 - SYS_SHM_OPEN = 0xC8C - SYS_SHM_UNLINK = 0xC8D - SYS_SIND128 = 0xC22 - SYS_SIND32 = 0xC20 - SYS_SIND64 = 0xC21 - SYS_SINHD128 = 0xC25 - SYS_SINHD32 = 0xC23 - SYS_SINHD64 = 0xC24 - SYS_SIZEOF_ALLOC = 0xCEA - SYS_SOCKATMARK = 0xC68 - SYS_SQRTD128 = 0xC28 - SYS_SQRTD32 = 0xC26 - SYS_SQRTD64 = 0xC27 - SYS_STRCHR = 0x0A0 - SYS_STRCSPN = 0x0A1 - SYS_STRERROR = 0x0A8 - SYS_STRERROR_R = 0xB33 - SYS_STRFTIME = 0x0B2 - SYS_STRLEN = 0x0A9 - SYS_STRPBRK = 0x0A2 - SYS_STRSPN = 0x0A4 - SYS_STRSTR = 0x0A5 - SYS_STRTOD128 = 0xC2B - SYS_STRTOD32 = 0xC29 - SYS_STRTOD64 = 0xC2A - SYS_STRTOK = 0x0A6 - SYS_TAND128 = 0xC2E - SYS_TAND32 = 0xC2C - SYS_TAND64 = 0xC2D - SYS_TANHD128 = 0xC31 - SYS_TANHD32 = 0xC2F - SYS_TANHD64 = 0xC30 - SYS_TGAMMAD128 = 0xC34 - SYS_TGAMMAD32 = 0xC32 - SYS_TGAMMAD64 = 0xC33 - SYS_TIME = 0x0AD - SYS_TIME64 = 0xCE1 - SYS_TMPFILE64 = 0xD4D - SYS_TMPFILE64_UNLOCKED = 0xD4E - SYS_TMPFILE_UNLOCKED = 0xCFD - SYS_TRUNCD128 = 0xC40 - SYS_TRUNCD32 = 0xC3E - SYS_TRUNCD64 = 0xC3F - SYS_UNGETC_UNLOCKED = 0xCC3 - SYS_UNGETWC_UNLOCKED = 0xCC4 - SYS_UNSETENV = 0xB34 - SYS_VFPRINTF_UNLOCKED = 0xCC5 - SYS_VFSCANF_UNLOCKED = 0xCC7 - SYS_VFWPRINTF_UNLOCKED = 0xCC9 - SYS_VFWSCANF_UNLOCKED = 0xCCB - SYS_VPRINTF_UNLOCKED = 0xCCD - SYS_VSCANF_UNLOCKED = 0xCCF - SYS_VWPRINTF_UNLOCKED = 0xCD1 - SYS_VWSCANF_UNLOCKED = 0xCD3 - SYS_WCSTOD128 = 0xC43 - SYS_WCSTOD32 = 0xC41 - SYS_WCSTOD64 = 0xC42 - SYS_WPRINTF_UNLOCKED = 0xCD5 - SYS_WSCANF_UNLOCKED = 0xCD6 - SYS__FLUSHLBF = 0xD68 - SYS__FLUSHLBF_UNLOCKED = 0xD6F - SYS___ACOSHF_H = 0xA54 - SYS___ACOSHL_H = 0xA55 - SYS___ASINHF_H = 0xA56 - SYS___ASINHL_H = 0xA57 - SYS___ATANPID128 = 0xC6D - SYS___ATANPID32 = 0xC6B - SYS___ATANPID64 = 0xC6C - SYS___CBRTF_H = 0xA58 - SYS___CBRTL_H = 0xA59 - SYS___CDUMP = 0x0C4 - SYS___CLASS = 0xAFA - SYS___CLASS2 = 0xB99 - SYS___CLASS2D128 = 0xC99 - SYS___CLASS2D32 = 0xC97 - SYS___CLASS2D64 = 0xC98 - SYS___CLASS2F = 0xC91 - SYS___CLASS2F_B = 0xC93 - SYS___CLASS2F_H = 0xC94 - SYS___CLASS2L = 0xC92 - SYS___CLASS2L_B = 0xC95 - SYS___CLASS2L_H = 0xC96 - SYS___CLASS2_B = 0xB9A - SYS___CLASS2_H = 0xB9B - SYS___CLASS_B = 0xAFB - SYS___CLASS_H = 0xAFC - SYS___CLOGL_B = 0xA01 - SYS___CLOGL_H = 0xA02 - SYS___CLRENV = 0x0C9 - SYS___CLRMF = 0x0BD - SYS___CODEPAGE_INFO = 0xC64 - SYS___CONJF_B = 0xA07 - SYS___CONJF_H = 0xA08 - SYS___CONJL_B = 0xA0A - SYS___CONJL_H = 0xA0B - SYS___CONJ_B = 0xA04 - SYS___CONJ_H = 0xA05 - SYS___COPYSIGN_B = 0xA5A - SYS___COPYSIGN_H = 0xAF5 - SYS___COSPID128 = 0xC70 - SYS___COSPID32 = 0xC6E - SYS___COSPID64 = 0xC6F - SYS___CPOWF_B = 0xA10 - SYS___CPOWF_H = 0xA11 - SYS___CPOWL_B = 0xA13 - SYS___CPOWL_H = 0xA14 - SYS___CPOW_B = 0xA0D - SYS___CPOW_H = 0xA0E - SYS___CPROJF_B = 0xA19 - SYS___CPROJF_H = 0xA1A - SYS___CPROJL_B = 0xA1C - SYS___CPROJL_H = 0xA1D - SYS___CPROJ_B = 0xA16 - SYS___CPROJ_H = 0xA17 - SYS___CREALF_B = 0xA22 - SYS___CREALF_H = 0xA23 - SYS___CREALL_B = 0xA25 - SYS___CREALL_H = 0xA26 - SYS___CREAL_B = 0xA1F - SYS___CREAL_H = 0xA20 - SYS___CSINF_B = 0xA2B - SYS___CSINF_H = 0xA2C - SYS___CSINHF_B = 0xA34 - SYS___CSINHF_H = 0xA35 - SYS___CSINHL_B = 0xA37 - SYS___CSINHL_H = 0xA38 - SYS___CSINH_B = 0xA31 - SYS___CSINH_H = 0xA32 - SYS___CSINL_B = 0xA2E - SYS___CSINL_H = 0xA2F - SYS___CSIN_B = 0xA28 - SYS___CSIN_H = 0xA29 - SYS___CSNAP = 0x0C5 - SYS___CSQRTF_B = 0xA3D - SYS___CSQRTF_H = 0xA3E - SYS___CSQRTL_B = 0xA40 - SYS___CSQRTL_H = 0xA41 - SYS___CSQRT_B = 0xA3A - SYS___CSQRT_H = 0xA3B - SYS___CTANF_B = 0xA46 - SYS___CTANF_H = 0xA47 - SYS___CTANHF_B = 0xA4F - SYS___CTANHF_H = 0xA50 - SYS___CTANHL_B = 0xA52 - SYS___CTANHL_H = 0xA53 - SYS___CTANH_B = 0xA4C - SYS___CTANH_H = 0xA4D - SYS___CTANL_B = 0xA49 - SYS___CTANL_H = 0xA4A - SYS___CTAN_B = 0xA43 - SYS___CTAN_H = 0xA44 - SYS___CTEST = 0x0C7 - SYS___CTRACE = 0x0C6 - SYS___D1TOP = 0xC9B - SYS___D2TOP = 0xC9C - SYS___D4TOP = 0xC9D - SYS___DYNALL = 0x0C3 - SYS___DYNFRE = 0x0C2 - SYS___EXP2F_H = 0xA5E - SYS___EXP2L_H = 0xA5F - SYS___EXP2_H = 0xA5D - SYS___EXPM1F_H = 0xA5B - SYS___EXPM1L_H = 0xA5C - SYS___FBUFSIZE = 0xD60 - SYS___FLBF = 0xD62 - SYS___FLDATA = 0x0C1 - SYS___FMAF_B = 0xA67 - SYS___FMAF_H = 0xA68 - SYS___FMAL_B = 0xA6A - SYS___FMAL_H = 0xA6B - SYS___FMAXF_B = 0xA70 - SYS___FMAXF_H = 0xA71 - SYS___FMAXL_B = 0xA73 - SYS___FMAXL_H = 0xA74 - SYS___FMAX_B = 0xA6D - SYS___FMAX_H = 0xA6E - SYS___FMA_B = 0xA64 - SYS___FMA_H = 0xA65 - SYS___FMINF_B = 0xA79 - SYS___FMINF_H = 0xA7A - SYS___FMINL_B = 0xA7C - SYS___FMINL_H = 0xA7D - SYS___FMIN_B = 0xA76 - SYS___FMIN_H = 0xA77 - SYS___FPENDING = 0xD61 - SYS___FPENDING_UNLOCKED = 0xD6C - SYS___FPURGE = 0xD69 - SYS___FPURGE_UNLOCKED = 0xD70 - SYS___FP_CAST_D = 0xBCB - SYS___FREADABLE = 0xD63 - SYS___FREADAHEAD = 0xD6A - SYS___FREADAHEAD_UNLOCKED = 0xD71 - SYS___FREADING = 0xD65 - SYS___FREADING_UNLOCKED = 0xD6D - SYS___FSEEK2 = 0xB3C - SYS___FSETERR = 0xD6B - SYS___FSETLOCKING = 0xD67 - SYS___FTCHEP = 0x0BF - SYS___FTELL2 = 0xB3B - SYS___FUPDT = 0x0B5 - SYS___FWRITABLE = 0xD64 - SYS___FWRITING = 0xD66 - SYS___FWRITING_UNLOCKED = 0xD6E - SYS___GETCB = 0x0B4 - SYS___GETGRGID1 = 0xD5B - SYS___GETGRNAM1 = 0xD5C - SYS___GETTHENT = 0xCE5 - SYS___GETTOD = 0xD3E - SYS___HYPOTF_H = 0xAF6 - SYS___HYPOTL_H = 0xAF7 - SYS___ILOGBF_B = 0xA7F - SYS___ILOGBF_H = 0xA80 - SYS___ILOGBL_B = 0xA82 - SYS___ILOGBL_H = 0xA83 - SYS___ISBLANK_A = 0xB2E - SYS___ISBLNK = 0x0FE - SYS___ISWBLANK_A = 0xB2F - SYS___LE_CEEGTJS = 0xD72 - SYS___LE_TRACEBACK = 0xB7A - SYS___LGAMMAL_H = 0xA62 - SYS___LGAMMA_B_C99 = 0xB39 - SYS___LGAMMA_H_C99 = 0xB38 - SYS___LGAMMA_R_C99 = 0xB3A - SYS___LLRINTF_B = 0xA88 - SYS___LLRINTF_H = 0xA89 - SYS___LLRINTL_B = 0xA8B - SYS___LLRINTL_H = 0xA8C - SYS___LLRINT_B = 0xA85 - SYS___LLRINT_H = 0xA86 - SYS___LLROUNDF_B = 0xA91 - SYS___LLROUNDF_H = 0xA92 - SYS___LLROUNDL_B = 0xA94 - SYS___LLROUNDL_H = 0xA95 - SYS___LLROUND_B = 0xA8E - SYS___LLROUND_H = 0xA8F - SYS___LOCALE_CTL = 0xD47 - SYS___LOG1PF_H = 0xA60 - SYS___LOG1PL_H = 0xA61 - SYS___LOGBF_B = 0xA97 - SYS___LOGBF_H = 0xA98 - SYS___LOGBL_B = 0xA9A - SYS___LOGBL_H = 0xA9B - SYS___LOGIN_APPLID = 0xCE2 - SYS___LRINTF_B = 0xAA0 - SYS___LRINTF_H = 0xAA1 - SYS___LRINTL_B = 0xAA3 - SYS___LRINTL_H = 0xAA4 - SYS___LRINT_B = 0xA9D - SYS___LRINT_H = 0xA9E - SYS___LROUNDF_FIXUP = 0xB31 - SYS___LROUNDL_B = 0xAA6 - SYS___LROUNDL_H = 0xAA7 - SYS___LROUND_FIXUP = 0xB30 - SYS___MOSERVICES = 0xD3D - SYS___MUST_STAY_CLEAN = 0xB7C - SYS___NANF_B = 0xAAB - SYS___NANL_B = 0xAAD - SYS___NAN_B = 0xAA9 - SYS___NEARBYINTF_B = 0xAB2 - SYS___NEARBYINTF_H = 0xAB3 - SYS___NEARBYINTL_B = 0xAB5 - SYS___NEARBYINTL_H = 0xAB6 - SYS___NEARBYINT_B = 0xAAF - SYS___NEARBYINT_H = 0xAB0 - SYS___NEXTAFTERF_B = 0xAB8 - SYS___NEXTAFTERF_H = 0xAB9 - SYS___NEXTAFTERL_B = 0xABB - SYS___NEXTAFTERL_H = 0xABC - SYS___NEXTTOWARDF_B = 0xAC1 - SYS___NEXTTOWARDF_H = 0xAC2 - SYS___NEXTTOWARDL_B = 0xAC4 - SYS___NEXTTOWARDL_H = 0xAC5 - SYS___NEXTTOWARD_B = 0xABE - SYS___NEXTTOWARD_H = 0xABF - SYS___O_ENV = 0xB7D - SYS___PASSWD_APPLID = 0xCE3 - SYS___PTOD1 = 0xC9E - SYS___PTOD2 = 0xC9F - SYS___PTOD4 = 0xCA0 - SYS___REGCOMP_STD = 0x0EA - SYS___REMAINDERF_H = 0xAC6 - SYS___REMAINDERL_H = 0xAC7 - SYS___REMQUOD128 = 0xC10 - SYS___REMQUOD32 = 0xC0E - SYS___REMQUOD64 = 0xC0F - SYS___REMQUOF_H = 0xAC9 - SYS___REMQUOL_H = 0xACA - SYS___REMQUO_H = 0xAC8 - SYS___RINTF_B = 0xACC - SYS___RINTL_B = 0xACE - SYS___ROUNDF_B = 0xAD3 - SYS___ROUNDF_H = 0xAD4 - SYS___ROUNDL_B = 0xAD6 - SYS___ROUNDL_H = 0xAD7 - SYS___ROUND_B = 0xAD0 - SYS___ROUND_H = 0xAD1 - SYS___SCALBLNF_B = 0xADC - SYS___SCALBLNF_H = 0xADD - SYS___SCALBLNL_B = 0xADF - SYS___SCALBLNL_H = 0xAE0 - SYS___SCALBLN_B = 0xAD9 - SYS___SCALBLN_H = 0xADA - SYS___SCALBNF_B = 0xAE4 - SYS___SCALBNF_H = 0xAE5 - SYS___SCALBNL_B = 0xAE7 - SYS___SCALBNL_H = 0xAE8 - SYS___SCALBN_B = 0xAE1 - SYS___SCALBN_H = 0xAE2 - SYS___SETENV = 0x0C8 - SYS___SINPID128 = 0xC73 - SYS___SINPID32 = 0xC71 - SYS___SINPID64 = 0xC72 - SYS___SMF_RECORD2 = 0xD48 - SYS___STATIC_REINIT = 0xB3D - SYS___TGAMMAF_H_C99 = 0xB79 - SYS___TGAMMAL_H = 0xAE9 - SYS___TGAMMA_H_C99 = 0xB78 - SYS___TOCSNAME2 = 0xC9A - SYS_CEIL = 0x01F - SYS_CHAUDIT = 0x1E0 - SYS_EXP = 0x01A - SYS_FCHAUDIT = 0x1E1 - SYS_FREXP = 0x01D - SYS_GETGROUPSBYNAME = 0x1E2 - SYS_GETPWUID = 0x1A0 - SYS_GETUID = 0x1A1 - SYS_ISATTY = 0x1A3 - SYS_KILL = 0x1A4 - SYS_LDEXP = 0x01E - SYS_LINK = 0x1A5 - SYS_LOG10 = 0x01C - SYS_LSEEK = 0x1A6 - SYS_LSTAT = 0x1A7 - SYS_MKDIR = 0x1A8 - SYS_MKFIFO = 0x1A9 - SYS_MKNOD = 0x1AA - SYS_MODF = 0x01B - SYS_MOUNT = 0x1AB - SYS_OPEN = 0x1AC - SYS_OPENDIR = 0x1AD - SYS_PATHCONF = 0x1AE - SYS_PAUSE = 0x1AF - SYS_PIPE = 0x1B0 - SYS_PTHREAD_ATTR_DESTROY = 0x1E7 - SYS_PTHREAD_ATTR_GETDETACHSTATE = 0x1EB - SYS_PTHREAD_ATTR_GETSTACKSIZE = 0x1E9 - SYS_PTHREAD_ATTR_GETWEIGHT_NP = 0x1ED - SYS_PTHREAD_ATTR_INIT = 0x1E6 - SYS_PTHREAD_ATTR_SETDETACHSTATE = 0x1EA - SYS_PTHREAD_ATTR_SETSTACKSIZE = 0x1E8 - SYS_PTHREAD_ATTR_SETWEIGHT_NP = 0x1EC - SYS_PTHREAD_CANCEL = 0x1EE - SYS_PTHREAD_CLEANUP_POP = 0x1F0 - SYS_PTHREAD_CLEANUP_PUSH = 0x1EF - SYS_PTHREAD_CONDATTR_DESTROY = 0x1F2 - SYS_PTHREAD_CONDATTR_INIT = 0x1F1 - SYS_PTHREAD_COND_BROADCAST = 0x1F6 - SYS_PTHREAD_COND_DESTROY = 0x1F4 - SYS_PTHREAD_COND_INIT = 0x1F3 - SYS_PTHREAD_COND_SIGNAL = 0x1F5 - SYS_PTHREAD_COND_TIMEDWAIT = 0x1F8 - SYS_PTHREAD_COND_WAIT = 0x1F7 - SYS_PTHREAD_CREATE = 0x1F9 - SYS_PTHREAD_DETACH = 0x1FA - SYS_PTHREAD_EQUAL = 0x1FB - SYS_PTHREAD_EXIT = 0x1E4 - SYS_PTHREAD_GETSPECIFIC = 0x1FC - SYS_PTHREAD_JOIN = 0x1FD - SYS_PTHREAD_KEY_CREATE = 0x1FE - SYS_PTHREAD_KILL = 0x1E5 - SYS_PTHREAD_MUTEXATTR_INIT = 0x1FF - SYS_READ = 0x1B2 - SYS_READDIR = 0x1B3 - SYS_READLINK = 0x1B4 - SYS_REWINDDIR = 0x1B5 - SYS_RMDIR = 0x1B6 - SYS_SETEGID = 0x1B7 - SYS_SETEUID = 0x1B8 - SYS_SETGID = 0x1B9 - SYS_SETPGID = 0x1BA - SYS_SETSID = 0x1BB - SYS_SETUID = 0x1BC - SYS_SIGACTION = 0x1BD - SYS_SIGADDSET = 0x1BE - SYS_SIGDELSET = 0x1BF - SYS_SIGEMPTYSET = 0x1C0 - SYS_SIGFILLSET = 0x1C1 - SYS_SIGISMEMBER = 0x1C2 - SYS_SIGLONGJMP = 0x1C3 - SYS_SIGPENDING = 0x1C4 - SYS_SIGPROCMASK = 0x1C5 - SYS_SIGSETJMP = 0x1C6 - SYS_SIGSUSPEND = 0x1C7 - SYS_SIGWAIT = 0x1E3 - SYS_SLEEP = 0x1C8 - SYS_STAT = 0x1C9 - SYS_SYMLINK = 0x1CB - SYS_SYSCONF = 0x1CC - SYS_TCDRAIN = 0x1CD - SYS_TCFLOW = 0x1CE - SYS_TCFLUSH = 0x1CF - SYS_TCGETATTR = 0x1D0 - SYS_TCGETPGRP = 0x1D1 - SYS_TCSENDBREAK = 0x1D2 - SYS_TCSETATTR = 0x1D3 - SYS_TCSETPGRP = 0x1D4 - SYS_TIMES = 0x1D5 - SYS_TTYNAME = 0x1D6 - SYS_TZSET = 0x1D7 - SYS_UMASK = 0x1D8 - SYS_UMOUNT = 0x1D9 - SYS_UNAME = 0x1DA - SYS_UNLINK = 0x1DB - SYS_UTIME = 0x1DC - SYS_WAIT = 0x1DD - SYS_WAITPID = 0x1DE - SYS_WRITE = 0x1DF - SYS_W_GETPSENT = 0x1B1 - SYS_W_IOCTL = 0x1A2 - SYS_W_STATFS = 0x1CA - SYS_A64L = 0x2EF - SYS_BCMP = 0x2B9 - SYS_BCOPY = 0x2BA - SYS_BZERO = 0x2BB - SYS_CATCLOSE = 0x2B6 - SYS_CATGETS = 0x2B7 - SYS_CATOPEN = 0x2B8 - SYS_CRYPT = 0x2AC - SYS_DBM_CLEARERR = 0x2F7 - SYS_DBM_CLOSE = 0x2F8 - SYS_DBM_DELETE = 0x2F9 - SYS_DBM_ERROR = 0x2FA - SYS_DBM_FETCH = 0x2FB - SYS_DBM_FIRSTKEY = 0x2FC - SYS_DBM_NEXTKEY = 0x2FD - SYS_DBM_OPEN = 0x2FE - SYS_DBM_STORE = 0x2FF - SYS_DRAND48 = 0x2B2 - SYS_ENCRYPT = 0x2AD - SYS_ENDUTXENT = 0x2E1 - SYS_ERAND48 = 0x2B3 - SYS_ERF = 0x02C - SYS_ERFC = 0x02D - SYS_FCHDIR = 0x2D9 - SYS_FFS = 0x2BC - SYS_FMTMSG = 0x2E5 - SYS_FSTATVFS = 0x2B4 - SYS_FTIME = 0x2F5 - SYS_GAMMA = 0x02E - SYS_GETDATE = 0x2A6 - SYS_GETPAGESIZE = 0x2D8 - SYS_GETTIMEOFDAY = 0x2F6 - SYS_GETUTXENT = 0x2E0 - SYS_GETUTXID = 0x2E2 - SYS_GETUTXLINE = 0x2E3 - SYS_HCREATE = 0x2C6 - SYS_HDESTROY = 0x2C7 - SYS_HSEARCH = 0x2C8 - SYS_HYPOT = 0x02B - SYS_INDEX = 0x2BD - SYS_INITSTATE = 0x2C2 - SYS_INSQUE = 0x2CF - SYS_ISASCII = 0x2ED - SYS_JRAND48 = 0x2E6 - SYS_L64A = 0x2F0 - SYS_LCONG48 = 0x2EA - SYS_LFIND = 0x2C9 - SYS_LRAND48 = 0x2E7 - SYS_LSEARCH = 0x2CA - SYS_MEMCCPY = 0x2D4 - SYS_MRAND48 = 0x2E8 - SYS_NRAND48 = 0x2E9 - SYS_PCLOSE = 0x2D2 - SYS_POPEN = 0x2D1 - SYS_PUTUTXLINE = 0x2E4 - SYS_RANDOM = 0x2C4 - SYS_REMQUE = 0x2D0 - SYS_RINDEX = 0x2BE - SYS_SEED48 = 0x2EC - SYS_SETKEY = 0x2AE - SYS_SETSTATE = 0x2C3 - SYS_SETUTXENT = 0x2DF - SYS_SRAND48 = 0x2EB - SYS_SRANDOM = 0x2C5 - SYS_STATVFS = 0x2B5 - SYS_STRCASECMP = 0x2BF - SYS_STRDUP = 0x2C0 - SYS_STRNCASECMP = 0x2C1 - SYS_SWAB = 0x2D3 - SYS_TDELETE = 0x2CB - SYS_TFIND = 0x2CC - SYS_TOASCII = 0x2EE - SYS_TSEARCH = 0x2CD - SYS_TWALK = 0x2CE - SYS_UALARM = 0x2F1 - SYS_USLEEP = 0x2F2 - SYS_WAIT3 = 0x2A7 - SYS_WAITID = 0x2A8 - SYS_Y1 = 0x02A - SYS___ATOE = 0x2DB - SYS___ATOE_L = 0x2DC - SYS___CATTRM = 0x2A9 - SYS___CNVBLK = 0x2AF - SYS___CRYTRM = 0x2B0 - SYS___DLGHT = 0x2A1 - SYS___ECRTRM = 0x2B1 - SYS___ETOA = 0x2DD - SYS___ETOA_L = 0x2DE - SYS___GDTRM = 0x2AA - SYS___OCLCK = 0x2DA - SYS___OPARGF = 0x2A2 - SYS___OPERRF = 0x2A5 - SYS___OPINDF = 0x2A4 - SYS___OPOPTF = 0x2A3 - SYS___RNDTRM = 0x2AB - SYS___SRCTRM = 0x2F4 - SYS___TZONE = 0x2A0 - SYS___UTXTRM = 0x2F3 - SYS_ASIN = 0x03E - SYS_ISXDIGIT = 0x03B - SYS_SETLOCAL = 0x03A - SYS_SETLOCALE = 0x03A - SYS_SIN = 0x03F - SYS_TOLOWER = 0x03C - SYS_TOUPPER = 0x03D - SYS_ACCEPT_AND_RECV = 0x4F7 - SYS_ATOL = 0x04E - SYS_CHECKSCH = 0x4BC - SYS_CHECKSCHENV = 0x4BC - SYS_CLEARERR = 0x04C - SYS_CONNECTS = 0x4B5 - SYS_CONNECTSERVER = 0x4B5 - SYS_CONNECTW = 0x4B4 - SYS_CONNECTWORKMGR = 0x4B4 - SYS_CONTINUE = 0x4B3 - SYS_CONTINUEWORKUNIT = 0x4B3 - SYS_COPYSIGN = 0x4C2 - SYS_CREATEWO = 0x4B2 - SYS_CREATEWORKUNIT = 0x4B2 - SYS_DELETEWO = 0x4B9 - SYS_DELETEWORKUNIT = 0x4B9 - SYS_DISCONNE = 0x4B6 - SYS_DISCONNECTSERVER = 0x4B6 - SYS_FEOF = 0x04D - SYS_FERROR = 0x04A - SYS_FINITE = 0x4C8 - SYS_GAMMA_R = 0x4E2 - SYS_JOINWORK = 0x4B7 - SYS_JOINWORKUNIT = 0x4B7 - SYS_LEAVEWOR = 0x4B8 - SYS_LEAVEWORKUNIT = 0x4B8 - SYS_LGAMMA_R = 0x4EB - SYS_MATHERR = 0x4D0 - SYS_PERROR = 0x04F - SYS_QUERYMET = 0x4BA - SYS_QUERYMETRICS = 0x4BA - SYS_QUERYSCH = 0x4BB - SYS_QUERYSCHENV = 0x4BB - SYS_REWIND = 0x04B - SYS_SCALBN = 0x4D4 - SYS_SIGNIFIC = 0x4D5 - SYS_SIGNIFICAND = 0x4D5 - SYS___ACOSH_B = 0x4DA - SYS___ACOS_B = 0x4D9 - SYS___ASINH_B = 0x4BE - SYS___ASIN_B = 0x4DB - SYS___ATAN2_B = 0x4DC - SYS___ATANH_B = 0x4DD - SYS___ATAN_B = 0x4BF - SYS___CBRT_B = 0x4C0 - SYS___CEIL_B = 0x4C1 - SYS___COSH_B = 0x4DE - SYS___COS_B = 0x4C3 - SYS___DGHT = 0x4A8 - SYS___ENVN = 0x4B0 - SYS___ERFC_B = 0x4C5 - SYS___ERF_B = 0x4C4 - SYS___EXPM1_B = 0x4C6 - SYS___EXP_B = 0x4DF - SYS___FABS_B = 0x4C7 - SYS___FLOOR_B = 0x4C9 - SYS___FMOD_B = 0x4E0 - SYS___FP_SETMODE = 0x4F8 - SYS___FREXP_B = 0x4CA - SYS___GAMMA_B = 0x4E1 - SYS___GDRR = 0x4A1 - SYS___HRRNO = 0x4A2 - SYS___HYPOT_B = 0x4E3 - SYS___ILOGB_B = 0x4CB - SYS___ISNAN_B = 0x4CC - SYS___J0_B = 0x4E4 - SYS___J1_B = 0x4E6 - SYS___JN_B = 0x4E8 - SYS___LDEXP_B = 0x4CD - SYS___LGAMMA_B = 0x4EA - SYS___LOG10_B = 0x4ED - SYS___LOG1P_B = 0x4CE - SYS___LOGB_B = 0x4CF - SYS___LOGIN = 0x4F5 - SYS___LOG_B = 0x4EC - SYS___MLOCKALL = 0x4B1 - SYS___MODF_B = 0x4D1 - SYS___NEXTAFTER_B = 0x4D2 - SYS___OPENDIR2 = 0x4F3 - SYS___OPEN_STAT = 0x4F6 - SYS___OPND = 0x4A5 - SYS___OPPT = 0x4A6 - SYS___OPRG = 0x4A3 - SYS___OPRR = 0x4A4 - SYS___PID_AFFINITY = 0x4BD - SYS___POW_B = 0x4EE - SYS___READDIR2 = 0x4F4 - SYS___REMAINDER_B = 0x4EF - SYS___RINT_B = 0x4D3 - SYS___SCALB_B = 0x4F0 - SYS___SIGACTIONSET = 0x4FB - SYS___SIGGM = 0x4A7 - SYS___SINH_B = 0x4F1 - SYS___SIN_B = 0x4D6 - SYS___SQRT_B = 0x4F2 - SYS___TANH_B = 0x4D8 - SYS___TAN_B = 0x4D7 - SYS___TRRNO = 0x4AF - SYS___TZNE = 0x4A9 - SYS___TZZN = 0x4AA - SYS___UCREATE = 0x4FC - SYS___UFREE = 0x4FE - SYS___UHEAPREPORT = 0x4FF - SYS___UMALLOC = 0x4FD - SYS___Y0_B = 0x4E5 - SYS___Y1_B = 0x4E7 - SYS___YN_B = 0x4E9 - SYS_ABORT = 0x05C - SYS_ASCTIME_R = 0x5E0 - SYS_ATEXIT = 0x05D - SYS_CONNECTE = 0x5AE - SYS_CONNECTEXPORTIMPORT = 0x5AE - SYS_CTIME_R = 0x5E1 - SYS_DN_COMP = 0x5DF - SYS_DN_EXPAND = 0x5DD - SYS_DN_SKIPNAME = 0x5DE - SYS_EXIT = 0x05A - SYS_EXPORTWO = 0x5A1 - SYS_EXPORTWORKUNIT = 0x5A1 - SYS_EXTRACTW = 0x5A5 - SYS_EXTRACTWORKUNIT = 0x5A5 - SYS_FSEEKO = 0x5C9 - SYS_FTELLO = 0x5C8 - SYS_GETGRGID_R = 0x5E7 - SYS_GETGRNAM_R = 0x5E8 - SYS_GETLOGIN_R = 0x5E9 - SYS_GETPWNAM_R = 0x5EA - SYS_GETPWUID_R = 0x5EB - SYS_GMTIME_R = 0x5E2 - SYS_IMPORTWO = 0x5A3 - SYS_IMPORTWORKUNIT = 0x5A3 - SYS_INET_NTOP = 0x5D3 - SYS_INET_PTON = 0x5D4 - SYS_LLABS = 0x5CE - SYS_LLDIV = 0x5CB - SYS_LOCALTIME_R = 0x5E3 - SYS_PTHREAD_ATFORK = 0x5ED - SYS_PTHREAD_ATTR_GETDETACHSTATE_U98 = 0x5FB - SYS_PTHREAD_ATTR_GETGUARDSIZE = 0x5EE - SYS_PTHREAD_ATTR_GETSCHEDPARAM = 0x5F9 - SYS_PTHREAD_ATTR_GETSTACKADDR = 0x5EF - SYS_PTHREAD_ATTR_SETDETACHSTATE_U98 = 0x5FC - SYS_PTHREAD_ATTR_SETGUARDSIZE = 0x5F0 - SYS_PTHREAD_ATTR_SETSCHEDPARAM = 0x5FA - SYS_PTHREAD_ATTR_SETSTACKADDR = 0x5F1 - SYS_PTHREAD_CONDATTR_GETPSHARED = 0x5F2 - SYS_PTHREAD_CONDATTR_SETPSHARED = 0x5F3 - SYS_PTHREAD_DETACH_U98 = 0x5FD - SYS_PTHREAD_GETCONCURRENCY = 0x5F4 - SYS_PTHREAD_GETSPECIFIC_U98 = 0x5FE - SYS_PTHREAD_KEY_DELETE = 0x5F5 - SYS_PTHREAD_SETCANCELSTATE = 0x5FF - SYS_PTHREAD_SETCONCURRENCY = 0x5F6 - SYS_PTHREAD_SIGMASK = 0x5F7 - SYS_QUERYENC = 0x5AD - SYS_QUERYWORKUNITCLASSIFICATION = 0x5AD - SYS_RAISE = 0x05E - SYS_RAND_R = 0x5E4 - SYS_READDIR_R = 0x5E6 - SYS_REALLOC = 0x05B - SYS_RES_INIT = 0x5D8 - SYS_RES_MKQUERY = 0x5D7 - SYS_RES_QUERY = 0x5D9 - SYS_RES_QUERYDOMAIN = 0x5DC - SYS_RES_SEARCH = 0x5DA - SYS_RES_SEND = 0x5DB - SYS_SETJMP = 0x05F - SYS_SIGQUEUE = 0x5A9 - SYS_STRTOK_R = 0x5E5 - SYS_STRTOLL = 0x5B0 - SYS_STRTOULL = 0x5B1 - SYS_TTYNAME_R = 0x5EC - SYS_UNDOEXPO = 0x5A2 - SYS_UNDOEXPORTWORKUNIT = 0x5A2 - SYS_UNDOIMPO = 0x5A4 - SYS_UNDOIMPORTWORKUNIT = 0x5A4 - SYS_WCSTOLL = 0x5CC - SYS_WCSTOULL = 0x5CD - SYS___ABORT = 0x05C - SYS___CONSOLE2 = 0x5D2 - SYS___CPL = 0x5A6 - SYS___DISCARDDATA = 0x5F8 - SYS___DSA_PREV = 0x5B2 - SYS___EP_FIND = 0x5B3 - SYS___FP_SWAPMODE = 0x5AF - SYS___GETUSERID = 0x5AB - SYS___GET_CPUID = 0x5B9 - SYS___GET_SYSTEM_SETTINGS = 0x5BA - SYS___IPDOMAINNAME = 0x5AC - SYS___MAP_INIT = 0x5A7 - SYS___MAP_SERVICE = 0x5A8 - SYS___MOUNT = 0x5AA - SYS___MSGRCV_TIMED = 0x5B7 - SYS___RES = 0x5D6 - SYS___SEMOP_TIMED = 0x5B8 - SYS___SERVER_THREADS_QUERY = 0x5B4 - SYS_FPRINTF = 0x06D - SYS_FSCANF = 0x06A - SYS_PRINTF = 0x06F - SYS_SETBUF = 0x06B - SYS_SETVBUF = 0x06C - SYS_SSCANF = 0x06E - SYS___CATGETS_A = 0x6C0 - SYS___CHAUDIT_A = 0x6F4 - SYS___CHMOD_A = 0x6E8 - SYS___COLLATE_INIT_A = 0x6AC - SYS___CREAT_A = 0x6F6 - SYS___CTYPE_INIT_A = 0x6AF - SYS___DLLLOAD_A = 0x6DF - SYS___DLLQUERYFN_A = 0x6E0 - SYS___DLLQUERYVAR_A = 0x6E1 - SYS___E2A_L = 0x6E3 - SYS___EXECLE_A = 0x6A0 - SYS___EXECLP_A = 0x6A4 - SYS___EXECVE_A = 0x6C1 - SYS___EXECVP_A = 0x6C2 - SYS___EXECV_A = 0x6B1 - SYS___FPRINTF_A = 0x6FA - SYS___GETADDRINFO_A = 0x6BF - SYS___GETNAMEINFO_A = 0x6C4 - SYS___GET_WCTYPE_STD_A = 0x6AE - SYS___ICONV_OPEN_A = 0x6DE - SYS___IF_INDEXTONAME_A = 0x6DC - SYS___IF_NAMETOINDEX_A = 0x6DB - SYS___ISWCTYPE_A = 0x6B0 - SYS___IS_WCTYPE_STD_A = 0x6B2 - SYS___LOCALECONV_A = 0x6B8 - SYS___LOCALECONV_STD_A = 0x6B9 - SYS___LOCALE_INIT_A = 0x6B7 - SYS___LSTAT_A = 0x6EE - SYS___LSTAT_O_A = 0x6EF - SYS___MKDIR_A = 0x6E9 - SYS___MKFIFO_A = 0x6EC - SYS___MKNOD_A = 0x6F0 - SYS___MONETARY_INIT_A = 0x6BC - SYS___MOUNT_A = 0x6F1 - SYS___NL_CSINFO_A = 0x6D6 - SYS___NL_LANGINFO_A = 0x6BA - SYS___NL_LNAGINFO_STD_A = 0x6BB - SYS___NL_MONINFO_A = 0x6D7 - SYS___NL_NUMINFO_A = 0x6D8 - SYS___NL_RESPINFO_A = 0x6D9 - SYS___NL_TIMINFO_A = 0x6DA - SYS___NUMERIC_INIT_A = 0x6C6 - SYS___OPEN_A = 0x6F7 - SYS___PRINTF_A = 0x6DD - SYS___RESP_INIT_A = 0x6C7 - SYS___RPMATCH_A = 0x6C8 - SYS___RPMATCH_C_A = 0x6C9 - SYS___RPMATCH_STD_A = 0x6CA - SYS___SETLOCALE_A = 0x6F9 - SYS___SPAWNP_A = 0x6C5 - SYS___SPAWN_A = 0x6C3 - SYS___SPRINTF_A = 0x6FB - SYS___STAT_A = 0x6EA - SYS___STAT_O_A = 0x6EB - SYS___STRCOLL_STD_A = 0x6A1 - SYS___STRFMON_A = 0x6BD - SYS___STRFMON_STD_A = 0x6BE - SYS___STRFTIME_A = 0x6CC - SYS___STRFTIME_STD_A = 0x6CD - SYS___STRPTIME_A = 0x6CE - SYS___STRPTIME_STD_A = 0x6CF - SYS___STRXFRM_A = 0x6A2 - SYS___STRXFRM_C_A = 0x6A3 - SYS___STRXFRM_STD_A = 0x6A5 - SYS___SYNTAX_INIT_A = 0x6D4 - SYS___TIME_INIT_A = 0x6CB - SYS___TOD_INIT_A = 0x6D5 - SYS___TOWLOWER_A = 0x6B3 - SYS___TOWLOWER_STD_A = 0x6B4 - SYS___TOWUPPER_A = 0x6B5 - SYS___TOWUPPER_STD_A = 0x6B6 - SYS___UMOUNT_A = 0x6F2 - SYS___VFPRINTF_A = 0x6FC - SYS___VPRINTF_A = 0x6FD - SYS___VSPRINTF_A = 0x6FE - SYS___VSWPRINTF_A = 0x6FF - SYS___WCSCOLL_A = 0x6A6 - SYS___WCSCOLL_C_A = 0x6A7 - SYS___WCSCOLL_STD_A = 0x6A8 - SYS___WCSFTIME_A = 0x6D0 - SYS___WCSFTIME_STD_A = 0x6D1 - SYS___WCSXFRM_A = 0x6A9 - SYS___WCSXFRM_C_A = 0x6AA - SYS___WCSXFRM_STD_A = 0x6AB - SYS___WCTYPE_A = 0x6AD - SYS___W_GETMNTENT_A = 0x6F5 - SYS_____CCSIDTYPE_A = 0x6E6 - SYS_____CHATTR_A = 0x6E2 - SYS_____CSNAMETYPE_A = 0x6E7 - SYS_____OPEN_STAT_A = 0x6ED - SYS_____SPAWN2_A = 0x6D2 - SYS_____SPAWNP2_A = 0x6D3 - SYS_____TOCCSID_A = 0x6E4 - SYS_____TOCSNAME_A = 0x6E5 - SYS_ACL_FREE = 0x7FF - SYS_ACL_INIT = 0x7FE - SYS_FWIDE = 0x7DF - SYS_FWPRINTF = 0x7D1 - SYS_FWRITE = 0x07E - SYS_FWSCANF = 0x7D5 - SYS_GETCHAR = 0x07B - SYS_GETS = 0x07C - SYS_M_CREATE_LAYOUT = 0x7C9 - SYS_M_DESTROY_LAYOUT = 0x7CA - SYS_M_GETVALUES_LAYOUT = 0x7CB - SYS_M_SETVALUES_LAYOUT = 0x7CC - SYS_M_TRANSFORM_LAYOUT = 0x7CD - SYS_M_WTRANSFORM_LAYOUT = 0x7CE - SYS_PREAD = 0x7C7 - SYS_PUTC = 0x07D - SYS_PUTCHAR = 0x07A - SYS_PUTS = 0x07F - SYS_PWRITE = 0x7C8 - SYS_TOWCTRAN = 0x7D8 - SYS_TOWCTRANS = 0x7D8 - SYS_UNATEXIT = 0x7B5 - SYS_VFWPRINT = 0x7D3 - SYS_VFWPRINTF = 0x7D3 - SYS_VWPRINTF = 0x7D4 - SYS_WCTRANS = 0x7D7 - SYS_WPRINTF = 0x7D2 - SYS_WSCANF = 0x7D6 - SYS___ASCTIME_R_A = 0x7A1 - SYS___BASENAME_A = 0x7DC - SYS___BTOWC_A = 0x7E4 - SYS___CDUMP_A = 0x7B7 - SYS___CEE3DMP_A = 0x7B6 - SYS___CEILF_H = 0x7F4 - SYS___CEILL_H = 0x7F5 - SYS___CEIL_H = 0x7EA - SYS___CRYPT_A = 0x7BE - SYS___CSNAP_A = 0x7B8 - SYS___CTEST_A = 0x7B9 - SYS___CTIME_R_A = 0x7A2 - SYS___CTRACE_A = 0x7BA - SYS___DBM_OPEN_A = 0x7E6 - SYS___DIRNAME_A = 0x7DD - SYS___FABSF_H = 0x7FA - SYS___FABSL_H = 0x7FB - SYS___FABS_H = 0x7ED - SYS___FGETWC_A = 0x7AA - SYS___FGETWS_A = 0x7AD - SYS___FLOORF_H = 0x7F6 - SYS___FLOORL_H = 0x7F7 - SYS___FLOOR_H = 0x7EB - SYS___FPUTWC_A = 0x7A5 - SYS___FPUTWS_A = 0x7A8 - SYS___GETTIMEOFDAY_A = 0x7AE - SYS___GETWCHAR_A = 0x7AC - SYS___GETWC_A = 0x7AB - SYS___GLOB_A = 0x7DE - SYS___GMTIME_A = 0x7AF - SYS___GMTIME_R_A = 0x7B0 - SYS___INET_PTON_A = 0x7BC - SYS___J0_H = 0x7EE - SYS___J1_H = 0x7EF - SYS___JN_H = 0x7F0 - SYS___LOCALTIME_A = 0x7B1 - SYS___LOCALTIME_R_A = 0x7B2 - SYS___MALLOC24 = 0x7FC - SYS___MALLOC31 = 0x7FD - SYS___MKTIME_A = 0x7B3 - SYS___MODFF_H = 0x7F8 - SYS___MODFL_H = 0x7F9 - SYS___MODF_H = 0x7EC - SYS___OPENDIR_A = 0x7C2 - SYS___OSNAME = 0x7E0 - SYS___PUTWCHAR_A = 0x7A7 - SYS___PUTWC_A = 0x7A6 - SYS___READDIR_A = 0x7C3 - SYS___STRTOLL_A = 0x7A3 - SYS___STRTOULL_A = 0x7A4 - SYS___SYSLOG_A = 0x7BD - SYS___TZZNA = 0x7B4 - SYS___UNGETWC_A = 0x7A9 - SYS___UTIME_A = 0x7A0 - SYS___VFPRINTF2_A = 0x7E7 - SYS___VPRINTF2_A = 0x7E8 - SYS___VSPRINTF2_A = 0x7E9 - SYS___VSWPRNTF2_A = 0x7BB - SYS___WCSTOD_A = 0x7D9 - SYS___WCSTOL_A = 0x7DA - SYS___WCSTOUL_A = 0x7DB - SYS___WCTOB_A = 0x7E5 - SYS___Y0_H = 0x7F1 - SYS___Y1_H = 0x7F2 - SYS___YN_H = 0x7F3 - SYS_____OPENDIR2_A = 0x7BF - SYS_____OSNAME_A = 0x7E1 - SYS_____READDIR2_A = 0x7C0 - SYS_DLCLOSE = 0x8DF - SYS_DLERROR = 0x8E0 - SYS_DLOPEN = 0x8DD - SYS_DLSYM = 0x8DE - SYS_FLOCKFILE = 0x8D3 - SYS_FTRYLOCKFILE = 0x8D4 - SYS_FUNLOCKFILE = 0x8D5 - SYS_GETCHAR_UNLOCKED = 0x8D7 - SYS_GETC_UNLOCKED = 0x8D6 - SYS_PUTCHAR_UNLOCKED = 0x8D9 - SYS_PUTC_UNLOCKED = 0x8D8 - SYS_SNPRINTF = 0x8DA - SYS_VSNPRINTF = 0x8DB - SYS_WCSCSPN = 0x08B - SYS_WCSLEN = 0x08C - SYS_WCSNCAT = 0x08D - SYS_WCSNCMP = 0x08A - SYS_WCSNCPY = 0x08F - SYS_WCSSPN = 0x08E - SYS___ABSF_H = 0x8E7 - SYS___ABSL_H = 0x8E8 - SYS___ABS_H = 0x8E6 - SYS___ACOSF_H = 0x8EA - SYS___ACOSH_H = 0x8EC - SYS___ACOSL_H = 0x8EB - SYS___ACOS_H = 0x8E9 - SYS___ASINF_H = 0x8EE - SYS___ASINH_H = 0x8F0 - SYS___ASINL_H = 0x8EF - SYS___ASIN_H = 0x8ED - SYS___ATAN2F_H = 0x8F8 - SYS___ATAN2L_H = 0x8F9 - SYS___ATAN2_H = 0x8F7 - SYS___ATANF_H = 0x8F2 - SYS___ATANHF_H = 0x8F5 - SYS___ATANHL_H = 0x8F6 - SYS___ATANH_H = 0x8F4 - SYS___ATANL_H = 0x8F3 - SYS___ATAN_H = 0x8F1 - SYS___CBRT_H = 0x8FA - SYS___COPYSIGNF_H = 0x8FB - SYS___COPYSIGNL_H = 0x8FC - SYS___COSF_H = 0x8FE - SYS___COSL_H = 0x8FF - SYS___COS_H = 0x8FD - SYS___DLERROR_A = 0x8D2 - SYS___DLOPEN_A = 0x8D0 - SYS___DLSYM_A = 0x8D1 - SYS___GETUTXENT_A = 0x8C6 - SYS___GETUTXID_A = 0x8C7 - SYS___GETUTXLINE_A = 0x8C8 - SYS___ITOA = 0x8AA - SYS___ITOA_A = 0x8B0 - SYS___LE_CONDITION_TOKEN_BUILD = 0x8A5 - SYS___LE_MSG_ADD_INSERT = 0x8A6 - SYS___LE_MSG_GET = 0x8A7 - SYS___LE_MSG_GET_AND_WRITE = 0x8A8 - SYS___LE_MSG_WRITE = 0x8A9 - SYS___LLTOA = 0x8AE - SYS___LLTOA_A = 0x8B4 - SYS___LTOA = 0x8AC - SYS___LTOA_A = 0x8B2 - SYS___PUTCHAR_UNLOCKED_A = 0x8CC - SYS___PUTC_UNLOCKED_A = 0x8CB - SYS___PUTUTXLINE_A = 0x8C9 - SYS___RESET_EXCEPTION_HANDLER = 0x8E3 - SYS___REXEC_A = 0x8C4 - SYS___REXEC_AF_A = 0x8C5 - SYS___SET_EXCEPTION_HANDLER = 0x8E2 - SYS___SNPRINTF_A = 0x8CD - SYS___SUPERKILL = 0x8A4 - SYS___TCGETATTR_A = 0x8A1 - SYS___TCSETATTR_A = 0x8A2 - SYS___ULLTOA = 0x8AF - SYS___ULLTOA_A = 0x8B5 - SYS___ULTOA = 0x8AD - SYS___ULTOA_A = 0x8B3 - SYS___UTOA = 0x8AB - SYS___UTOA_A = 0x8B1 - SYS___VHM_EVENT = 0x8E4 - SYS___VSNPRINTF_A = 0x8CE - SYS_____GETENV_A = 0x8C3 - SYS_____UTMPXNAME_A = 0x8CA - SYS_CACOSH = 0x9A0 - SYS_CACOSHF = 0x9A3 - SYS_CACOSHL = 0x9A6 - SYS_CARG = 0x9A9 - SYS_CARGF = 0x9AC - SYS_CARGL = 0x9AF - SYS_CASIN = 0x9B2 - SYS_CASINF = 0x9B5 - SYS_CASINH = 0x9BB - SYS_CASINHF = 0x9BE - SYS_CASINHL = 0x9C1 - SYS_CASINL = 0x9B8 - SYS_CATAN = 0x9C4 - SYS_CATANF = 0x9C7 - SYS_CATANH = 0x9CD - SYS_CATANHF = 0x9D0 - SYS_CATANHL = 0x9D3 - SYS_CATANL = 0x9CA - SYS_CCOS = 0x9D6 - SYS_CCOSF = 0x9D9 - SYS_CCOSH = 0x9DF - SYS_CCOSHF = 0x9E2 - SYS_CCOSHL = 0x9E5 - SYS_CCOSL = 0x9DC - SYS_CEXP = 0x9E8 - SYS_CEXPF = 0x9EB - SYS_CEXPL = 0x9EE - SYS_CIMAG = 0x9F1 - SYS_CIMAGF = 0x9F4 - SYS_CIMAGL = 0x9F7 - SYS_CLOGF = 0x9FD - SYS_MEMCHR = 0x09B - SYS_MEMCMP = 0x09A - SYS_STRCOLL = 0x09C - SYS_STRNCMP = 0x09D - SYS_STRRCHR = 0x09F - SYS_STRXFRM = 0x09E - SYS___CACOSHF_B = 0x9A4 - SYS___CACOSHF_H = 0x9A5 - SYS___CACOSHL_B = 0x9A7 - SYS___CACOSHL_H = 0x9A8 - SYS___CACOSH_B = 0x9A1 - SYS___CACOSH_H = 0x9A2 - SYS___CARGF_B = 0x9AD - SYS___CARGF_H = 0x9AE - SYS___CARGL_B = 0x9B0 - SYS___CARGL_H = 0x9B1 - SYS___CARG_B = 0x9AA - SYS___CARG_H = 0x9AB - SYS___CASINF_B = 0x9B6 - SYS___CASINF_H = 0x9B7 - SYS___CASINHF_B = 0x9BF - SYS___CASINHF_H = 0x9C0 - SYS___CASINHL_B = 0x9C2 - SYS___CASINHL_H = 0x9C3 - SYS___CASINH_B = 0x9BC - SYS___CASINH_H = 0x9BD - SYS___CASINL_B = 0x9B9 - SYS___CASINL_H = 0x9BA - SYS___CASIN_B = 0x9B3 - SYS___CASIN_H = 0x9B4 - SYS___CATANF_B = 0x9C8 - SYS___CATANF_H = 0x9C9 - SYS___CATANHF_B = 0x9D1 - SYS___CATANHF_H = 0x9D2 - SYS___CATANHL_B = 0x9D4 - SYS___CATANHL_H = 0x9D5 - SYS___CATANH_B = 0x9CE - SYS___CATANH_H = 0x9CF - SYS___CATANL_B = 0x9CB - SYS___CATANL_H = 0x9CC - SYS___CATAN_B = 0x9C5 - SYS___CATAN_H = 0x9C6 - SYS___CCOSF_B = 0x9DA - SYS___CCOSF_H = 0x9DB - SYS___CCOSHF_B = 0x9E3 - SYS___CCOSHF_H = 0x9E4 - SYS___CCOSHL_B = 0x9E6 - SYS___CCOSHL_H = 0x9E7 - SYS___CCOSH_B = 0x9E0 - SYS___CCOSH_H = 0x9E1 - SYS___CCOSL_B = 0x9DD - SYS___CCOSL_H = 0x9DE - SYS___CCOS_B = 0x9D7 - SYS___CCOS_H = 0x9D8 - SYS___CEXPF_B = 0x9EC - SYS___CEXPF_H = 0x9ED - SYS___CEXPL_B = 0x9EF - SYS___CEXPL_H = 0x9F0 - SYS___CEXP_B = 0x9E9 - SYS___CEXP_H = 0x9EA - SYS___CIMAGF_B = 0x9F5 - SYS___CIMAGF_H = 0x9F6 - SYS___CIMAGL_B = 0x9F8 - SYS___CIMAGL_H = 0x9F9 - SYS___CIMAG_B = 0x9F2 - SYS___CIMAG_H = 0x9F3 - SYS___CLOG = 0x9FA - SYS___CLOGF_B = 0x9FE - SYS___CLOGF_H = 0x9FF - SYS___CLOG_B = 0x9FB - SYS___CLOG_H = 0x9FC - SYS_ISWCTYPE = 0x10C - SYS_ISWXDIGI = 0x10A - SYS_ISWXDIGIT = 0x10A - SYS_MBSINIT = 0x10F - SYS_TOWLOWER = 0x10D - SYS_TOWUPPER = 0x10E - SYS_WCTYPE = 0x10B - SYS_WCSSTR = 0x11B - SYS___RPMTCH = 0x11A - SYS_WCSTOD = 0x12E - SYS_WCSTOK = 0x12C - SYS_WCSTOL = 0x12D - SYS_WCSTOUL = 0x12F - SYS_FGETWC = 0x13C - SYS_FGETWS = 0x13D - SYS_FPUTWC = 0x13E - SYS_FPUTWS = 0x13F - SYS_REGERROR = 0x13B - SYS_REGFREE = 0x13A - SYS_COLLEQUIV = 0x14F - SYS_COLLTOSTR = 0x14E - SYS_ISMCCOLLEL = 0x14C - SYS_STRTOCOLL = 0x14D - SYS_DLLFREE = 0x16F - SYS_DLLQUERYFN = 0x16D - SYS_DLLQUERYVAR = 0x16E - SYS_GETMCCOLL = 0x16A - SYS_GETWMCCOLL = 0x16B - SYS___ERR2AD = 0x16C - SYS_CFSETOSPEED = 0x17A - SYS_CHDIR = 0x17B - SYS_CHMOD = 0x17C - SYS_CHOWN = 0x17D - SYS_CLOSE = 0x17E - SYS_CLOSEDIR = 0x17F - SYS_LOG = 0x017 - SYS_COSH = 0x018 - SYS_FCHMOD = 0x18A - SYS_FCHOWN = 0x18B - SYS_FCNTL = 0x18C - SYS_FILENO = 0x18D - SYS_FORK = 0x18E - SYS_FPATHCONF = 0x18F - SYS_GETLOGIN = 0x19A - SYS_GETPGRP = 0x19C - SYS_GETPID = 0x19D - SYS_GETPPID = 0x19E - SYS_GETPWNAM = 0x19F - SYS_TANH = 0x019 - SYS_W_GETMNTENT = 0x19B - SYS_POW = 0x020 - SYS_PTHREAD_SELF = 0x20A - SYS_PTHREAD_SETINTR = 0x20B - SYS_PTHREAD_SETINTRTYPE = 0x20C - SYS_PTHREAD_SETSPECIFIC = 0x20D - SYS_PTHREAD_TESTINTR = 0x20E - SYS_PTHREAD_YIELD = 0x20F - SYS_SQRT = 0x021 - SYS_FLOOR = 0x022 - SYS_J1 = 0x023 - SYS_WCSPBRK = 0x23F - SYS_BSEARCH = 0x24C - SYS_FABS = 0x024 - SYS_GETENV = 0x24A - SYS_LDIV = 0x24D - SYS_SYSTEM = 0x24B - SYS_FMOD = 0x025 - SYS___RETHROW = 0x25F - SYS___THROW = 0x25E - SYS_J0 = 0x026 - SYS_PUTENV = 0x26A - SYS___GETENV = 0x26F - SYS_SEMCTL = 0x27A - SYS_SEMGET = 0x27B - SYS_SEMOP = 0x27C - SYS_SHMAT = 0x27D - SYS_SHMCTL = 0x27E - SYS_SHMDT = 0x27F - SYS_YN = 0x027 - SYS_JN = 0x028 - SYS_SIGALTSTACK = 0x28A - SYS_SIGHOLD = 0x28B - SYS_SIGIGNORE = 0x28C - SYS_SIGINTERRUPT = 0x28D - SYS_SIGPAUSE = 0x28E - SYS_SIGRELSE = 0x28F - SYS_GETOPT = 0x29A - SYS_GETSUBOPT = 0x29D - SYS_LCHOWN = 0x29B - SYS_SETPGRP = 0x29E - SYS_TRUNCATE = 0x29C - SYS_Y0 = 0x029 - SYS___GDERR = 0x29F - SYS_ISALPHA = 0x030 - SYS_VFORK = 0x30F - SYS__LONGJMP = 0x30D - SYS__SETJMP = 0x30E - SYS_GLOB = 0x31A - SYS_GLOBFREE = 0x31B - SYS_ISALNUM = 0x031 - SYS_PUTW = 0x31C - SYS_SEEKDIR = 0x31D - SYS_TELLDIR = 0x31E - SYS_TEMPNAM = 0x31F - SYS_GETTIMEOFDAY_R = 0x32E - SYS_ISLOWER = 0x032 - SYS_LGAMMA = 0x32C - SYS_REMAINDER = 0x32A - SYS_SCALB = 0x32B - SYS_SYNC = 0x32F - SYS_TTYSLOT = 0x32D - SYS_ENDPROTOENT = 0x33A - SYS_ENDSERVENT = 0x33B - SYS_GETHOSTBYADDR = 0x33D - SYS_GETHOSTBYADDR_R = 0x33C - SYS_GETHOSTBYNAME = 0x33F - SYS_GETHOSTBYNAME_R = 0x33E - SYS_ISCNTRL = 0x033 - SYS_GETSERVBYNAME = 0x34A - SYS_GETSERVBYPORT = 0x34B - SYS_GETSERVENT = 0x34C - SYS_GETSOCKNAME = 0x34D - SYS_GETSOCKOPT = 0x34E - SYS_INET_ADDR = 0x34F - SYS_ISDIGIT = 0x034 - SYS_ISGRAPH = 0x035 - SYS_SELECT = 0x35B - SYS_SELECTEX = 0x35C - SYS_SEND = 0x35D - SYS_SENDTO = 0x35F - SYS_CHROOT = 0x36A - SYS_ISNAN = 0x36D - SYS_ISUPPER = 0x036 - SYS_ULIMIT = 0x36C - SYS_UTIMES = 0x36E - SYS_W_STATVFS = 0x36B - SYS___H_ERRNO = 0x36F - SYS_GRANTPT = 0x37A - SYS_ISPRINT = 0x037 - SYS_TCGETSID = 0x37C - SYS_UNLOCKPT = 0x37B - SYS___TCGETCP = 0x37D - SYS___TCSETCP = 0x37E - SYS___TCSETTABLES = 0x37F - SYS_ISPUNCT = 0x038 - SYS_NLIST = 0x38C - SYS___IPDBCS = 0x38D - SYS___IPDSPX = 0x38E - SYS___IPMSGC = 0x38F - SYS___STHOSTENT = 0x38B - SYS___STSERVENT = 0x38A - SYS_ISSPACE = 0x039 - SYS_COS = 0x040 - SYS_T_ALLOC = 0x40A - SYS_T_BIND = 0x40B - SYS_T_CLOSE = 0x40C - SYS_T_CONNECT = 0x40D - SYS_T_ERROR = 0x40E - SYS_T_FREE = 0x40F - SYS_TAN = 0x041 - SYS_T_RCVREL = 0x41A - SYS_T_RCVUDATA = 0x41B - SYS_T_RCVUDERR = 0x41C - SYS_T_SND = 0x41D - SYS_T_SNDDIS = 0x41E - SYS_T_SNDREL = 0x41F - SYS_GETPMSG = 0x42A - SYS_ISASTREAM = 0x42B - SYS_PUTMSG = 0x42C - SYS_PUTPMSG = 0x42D - SYS_SINH = 0x042 - SYS___ISPOSIXON = 0x42E - SYS___OPENMVSREL = 0x42F - SYS_ACOS = 0x043 - SYS_ATAN = 0x044 - SYS_ATAN2 = 0x045 - SYS_FTELL = 0x046 - SYS_FGETPOS = 0x047 - SYS_SOCK_DEBUG = 0x47A - SYS_SOCK_DO_TESTSTOR = 0x47D - SYS_TAKESOCKET = 0x47E - SYS___SERVER_INIT = 0x47F - SYS_FSEEK = 0x048 - SYS___IPHOST = 0x48B - SYS___IPNODE = 0x48C - SYS___SERVER_CLASSIFY_CREATE = 0x48D - SYS___SERVER_CLASSIFY_DESTROY = 0x48E - SYS___SERVER_CLASSIFY_RESET = 0x48F - SYS___SMF_RECORD = 0x48A - SYS_FSETPOS = 0x049 - SYS___FNWSA = 0x49B - SYS___SPAWN2 = 0x49D - SYS___SPAWNP2 = 0x49E - SYS_ATOF = 0x050 - SYS_PTHREAD_MUTEXATTR_GETPSHARED = 0x50A - SYS_PTHREAD_MUTEXATTR_SETPSHARED = 0x50B - SYS_PTHREAD_RWLOCK_DESTROY = 0x50C - SYS_PTHREAD_RWLOCK_INIT = 0x50D - SYS_PTHREAD_RWLOCK_RDLOCK = 0x50E - SYS_PTHREAD_RWLOCK_TRYRDLOCK = 0x50F - SYS_ATOI = 0x051 - SYS___FP_CLASS = 0x51D - SYS___FP_CLR_FLAG = 0x51A - SYS___FP_FINITE = 0x51E - SYS___FP_ISNAN = 0x51F - SYS___FP_RAISE_XCP = 0x51C - SYS___FP_READ_FLAG = 0x51B - SYS_RAND = 0x052 - SYS_SIGTIMEDWAIT = 0x52D - SYS_SIGWAITINFO = 0x52E - SYS___CHKBFP = 0x52F - SYS___FPC_RS = 0x52C - SYS___FPC_RW = 0x52A - SYS___FPC_SM = 0x52B - SYS_STRTOD = 0x053 - SYS_STRTOL = 0x054 - SYS_STRTOUL = 0x055 - SYS_MALLOC = 0x056 - SYS_SRAND = 0x057 - SYS_CALLOC = 0x058 - SYS_FREE = 0x059 - SYS___OSENV = 0x59F - SYS___W_PIOCTL = 0x59E - SYS_LONGJMP = 0x060 - SYS___FLOORF_B = 0x60A - SYS___FLOORL_B = 0x60B - SYS___FREXPF_B = 0x60C - SYS___FREXPL_B = 0x60D - SYS___LDEXPF_B = 0x60E - SYS___LDEXPL_B = 0x60F - SYS_SIGNAL = 0x061 - SYS___ATAN2F_B = 0x61A - SYS___ATAN2L_B = 0x61B - SYS___COSHF_B = 0x61C - SYS___COSHL_B = 0x61D - SYS___EXPF_B = 0x61E - SYS___EXPL_B = 0x61F - SYS_TMPNAM = 0x062 - SYS___ABSF_B = 0x62A - SYS___ABSL_B = 0x62C - SYS___ABS_B = 0x62B - SYS___FMODF_B = 0x62D - SYS___FMODL_B = 0x62E - SYS___MODFF_B = 0x62F - SYS_ATANL = 0x63A - SYS_CEILF = 0x63B - SYS_CEILL = 0x63C - SYS_COSF = 0x63D - SYS_COSHF = 0x63F - SYS_COSL = 0x63E - SYS_REMOVE = 0x063 - SYS_POWL = 0x64A - SYS_RENAME = 0x064 - SYS_SINF = 0x64B - SYS_SINHF = 0x64F - SYS_SINL = 0x64C - SYS_SQRTF = 0x64D - SYS_SQRTL = 0x64E - SYS_BTOWC = 0x65F - SYS_FREXPL = 0x65A - SYS_LDEXPF = 0x65B - SYS_LDEXPL = 0x65C - SYS_MODFF = 0x65D - SYS_MODFL = 0x65E - SYS_TMPFILE = 0x065 - SYS_FREOPEN = 0x066 - SYS___CHARMAP_INIT_A = 0x66E - SYS___GETHOSTBYADDR_R_A = 0x66C - SYS___GETHOSTBYNAME_A = 0x66A - SYS___GETHOSTBYNAME_R_A = 0x66D - SYS___MBLEN_A = 0x66F - SYS___RES_INIT_A = 0x66B - SYS_FCLOSE = 0x067 - SYS___GETGRGID_R_A = 0x67D - SYS___WCSTOMBS_A = 0x67A - SYS___WCSTOMBS_STD_A = 0x67B - SYS___WCSWIDTH_A = 0x67C - SYS___WCSWIDTH_ASIA = 0x67F - SYS___WCSWIDTH_STD_A = 0x67E - SYS_FFLUSH = 0x068 - SYS___GETLOGIN_R_A = 0x68E - SYS___GETPWNAM_R_A = 0x68C - SYS___GETPWUID_R_A = 0x68D - SYS___TTYNAME_R_A = 0x68F - SYS___WCWIDTH_ASIA = 0x68B - SYS___WCWIDTH_STD_A = 0x68A - SYS_FOPEN = 0x069 - SYS___REGEXEC_A = 0x69A - SYS___REGEXEC_STD_A = 0x69B - SYS___REGFREE_A = 0x69C - SYS___REGFREE_STD_A = 0x69D - SYS___STRCOLL_A = 0x69E - SYS___STRCOLL_C_A = 0x69F - SYS_SCANF = 0x070 - SYS___A64L_A = 0x70C - SYS___ECVT_A = 0x70D - SYS___FCVT_A = 0x70E - SYS___GCVT_A = 0x70F - SYS___STRTOUL_A = 0x70A - SYS_____AE_CORRESTBL_QUERY_A = 0x70B - SYS_SPRINTF = 0x071 - SYS___ACCESS_A = 0x71F - SYS___CATOPEN_A = 0x71E - SYS___GETOPT_A = 0x71D - SYS___REALPATH_A = 0x71A - SYS___SETENV_A = 0x71B - SYS___SYSTEM_A = 0x71C - SYS_FGETC = 0x072 - SYS___GAI_STRERROR_A = 0x72F - SYS___RMDIR_A = 0x72A - SYS___STATVFS_A = 0x72B - SYS___SYMLINK_A = 0x72C - SYS___TRUNCATE_A = 0x72D - SYS___UNLINK_A = 0x72E - SYS_VFPRINTF = 0x073 - SYS___ISSPACE_A = 0x73A - SYS___ISUPPER_A = 0x73B - SYS___ISWALNUM_A = 0x73F - SYS___ISXDIGIT_A = 0x73C - SYS___TOLOWER_A = 0x73D - SYS___TOUPPER_A = 0x73E - SYS_VPRINTF = 0x074 - SYS___CONFSTR_A = 0x74B - SYS___FDOPEN_A = 0x74E - SYS___FLDATA_A = 0x74F - SYS___FTOK_A = 0x74C - SYS___ISWXDIGIT_A = 0x74A - SYS___MKTEMP_A = 0x74D - SYS_VSPRINTF = 0x075 - SYS___GETGRGID_A = 0x75A - SYS___GETGRNAM_A = 0x75B - SYS___GETGROUPSBYNAME_A = 0x75C - SYS___GETHOSTENT_A = 0x75D - SYS___GETHOSTNAME_A = 0x75E - SYS___GETLOGIN_A = 0x75F - SYS_GETC = 0x076 - SYS___CREATEWORKUNIT_A = 0x76A - SYS___CTERMID_A = 0x76B - SYS___FMTMSG_A = 0x76C - SYS___INITGROUPS_A = 0x76D - SYS___MSGRCV_A = 0x76F - SYS_____LOGIN_A = 0x76E - SYS_FGETS = 0x077 - SYS___STRCASECMP_A = 0x77B - SYS___STRNCASECMP_A = 0x77C - SYS___TTYNAME_A = 0x77D - SYS___UNAME_A = 0x77E - SYS___UTIMES_A = 0x77F - SYS_____SERVER_PWU_A = 0x77A - SYS_FPUTC = 0x078 - SYS___CREAT_O_A = 0x78E - SYS___ENVNA = 0x78F - SYS___FREAD_A = 0x78A - SYS___FWRITE_A = 0x78B - SYS___ISASCII = 0x78D - SYS___OPEN_O_A = 0x78C - SYS_FPUTS = 0x079 - SYS___ASCTIME_A = 0x79C - SYS___CTIME_A = 0x79D - SYS___GETDATE_A = 0x79E - SYS___GETSERVBYPORT_A = 0x79A - SYS___GETSERVENT_A = 0x79B - SYS___TZSET_A = 0x79F - SYS_ACL_FROM_TEXT = 0x80C - SYS_ACL_SET_FD = 0x80A - SYS_ACL_SET_FILE = 0x80B - SYS_ACL_SORT = 0x80E - SYS_ACL_TO_TEXT = 0x80D - SYS_UNGETC = 0x080 - SYS___SHUTDOWN_REGISTRATION = 0x80F - SYS_FREAD = 0x081 - SYS_FREEADDRINFO = 0x81A - SYS_GAI_STRERROR = 0x81B - SYS_REXEC_AF = 0x81C - SYS___DYNALLOC_A = 0x81F - SYS___POE = 0x81D - SYS_WCSTOMBS = 0x082 - SYS___INET_ADDR_A = 0x82F - SYS___NLIST_A = 0x82A - SYS_____TCGETCP_A = 0x82B - SYS_____TCSETCP_A = 0x82C - SYS_____W_PIOCTL_A = 0x82E - SYS_MBTOWC = 0x083 - SYS___CABEND = 0x83D - SYS___LE_CIB_GET = 0x83E - SYS___RECVMSG_A = 0x83B - SYS___SENDMSG_A = 0x83A - SYS___SET_LAA_FOR_JIT = 0x83F - SYS_____LCHATTR_A = 0x83C - SYS_WCTOMB = 0x084 - SYS___CBRTL_B = 0x84A - SYS___COPYSIGNF_B = 0x84B - SYS___COPYSIGNL_B = 0x84C - SYS___COTANF_B = 0x84D - SYS___COTANL_B = 0x84F - SYS___COTAN_B = 0x84E - SYS_MBSTOWCS = 0x085 - SYS___LOG1PL_B = 0x85A - SYS___LOG2F_B = 0x85B - SYS___LOG2L_B = 0x85D - SYS___LOG2_B = 0x85C - SYS___REMAINDERF_B = 0x85E - SYS___REMAINDERL_B = 0x85F - SYS_ACOSHF = 0x86E - SYS_ACOSHL = 0x86F - SYS_WCSCPY = 0x086 - SYS___ERFCF_B = 0x86D - SYS___ERFF_B = 0x86C - SYS___LROUNDF_B = 0x86A - SYS___LROUND_B = 0x86B - SYS_COTANL = 0x87A - SYS_EXP2F = 0x87B - SYS_EXP2L = 0x87C - SYS_EXPM1F = 0x87D - SYS_EXPM1L = 0x87E - SYS_FDIMF = 0x87F - SYS_WCSCAT = 0x087 - SYS___COTANL = 0x87A - SYS_REMAINDERF = 0x88A - SYS_REMAINDERL = 0x88B - SYS_REMAINDF = 0x88A - SYS_REMAINDL = 0x88B - SYS_REMQUO = 0x88D - SYS_REMQUOF = 0x88C - SYS_REMQUOL = 0x88E - SYS_TGAMMAF = 0x88F - SYS_WCSCHR = 0x088 - SYS_ERFCF = 0x89B - SYS_ERFCL = 0x89C - SYS_ERFL = 0x89A - SYS_EXP2 = 0x89E - SYS_WCSCMP = 0x089 - SYS___EXP2_B = 0x89D - SYS___FAR_JUMP = 0x89F - SYS_ABS = 0x090 - SYS___ERFCL_H = 0x90A - SYS___EXPF_H = 0x90C - SYS___EXPL_H = 0x90D - SYS___EXPM1_H = 0x90E - SYS___EXP_H = 0x90B - SYS___FDIM_H = 0x90F - SYS_DIV = 0x091 - SYS___LOG2F_H = 0x91F - SYS___LOG2_H = 0x91E - SYS___LOGB_H = 0x91D - SYS___LOGF_H = 0x91B - SYS___LOGL_H = 0x91C - SYS___LOG_H = 0x91A - SYS_LABS = 0x092 - SYS___POWL_H = 0x92A - SYS___REMAINDER_H = 0x92B - SYS___RINT_H = 0x92C - SYS___SCALB_H = 0x92D - SYS___SINF_H = 0x92F - SYS___SIN_H = 0x92E - SYS_STRNCPY = 0x093 - SYS___TANHF_H = 0x93B - SYS___TANHL_H = 0x93C - SYS___TANH_H = 0x93A - SYS___TGAMMAF_H = 0x93E - SYS___TGAMMA_H = 0x93D - SYS___TRUNC_H = 0x93F - SYS_MEMCPY = 0x094 - SYS_VFWSCANF = 0x94A - SYS_VSWSCANF = 0x94E - SYS_VWSCANF = 0x94C - SYS_INET6_RTH_ADD = 0x95D - SYS_INET6_RTH_INIT = 0x95C - SYS_INET6_RTH_REVERSE = 0x95E - SYS_INET6_RTH_SEGMENTS = 0x95F - SYS_INET6_RTH_SPACE = 0x95B - SYS_MEMMOVE = 0x095 - SYS_WCSTOLD = 0x95A - SYS_STRCPY = 0x096 - SYS_STRCMP = 0x097 - SYS_CABS = 0x98E - SYS_STRCAT = 0x098 - SYS___CABS_B = 0x98F - SYS___POW_II = 0x98A - SYS___POW_II_B = 0x98B - SYS___POW_II_H = 0x98C - SYS_CACOSF = 0x99A - SYS_CACOSL = 0x99D - SYS_STRNCAT = 0x099 - SYS___CACOSF_B = 0x99B - SYS___CACOSF_H = 0x99C - SYS___CACOSL_B = 0x99E - SYS___CACOSL_H = 0x99F - SYS_ISWALPHA = 0x100 - SYS_ISWBLANK = 0x101 - SYS___ISWBLK = 0x101 - SYS_ISWCNTRL = 0x102 - SYS_ISWDIGIT = 0x103 - SYS_ISWGRAPH = 0x104 - SYS_ISWLOWER = 0x105 - SYS_ISWPRINT = 0x106 - SYS_ISWPUNCT = 0x107 - SYS_ISWSPACE = 0x108 - SYS_ISWUPPER = 0x109 - SYS_WCTOB = 0x110 - SYS_MBRLEN = 0x111 - SYS_MBRTOWC = 0x112 - SYS_MBSRTOWC = 0x113 - SYS_MBSRTOWCS = 0x113 - SYS_WCRTOMB = 0x114 - SYS_WCSRTOMB = 0x115 - SYS_WCSRTOMBS = 0x115 - SYS___CSID = 0x116 - SYS___WCSID = 0x117 - SYS_STRPTIME = 0x118 - SYS___STRPTM = 0x118 - SYS_STRFMON = 0x119 - SYS_WCSCOLL = 0x130 - SYS_WCSXFRM = 0x131 - SYS_WCSWIDTH = 0x132 - SYS_WCWIDTH = 0x133 - SYS_WCSFTIME = 0x134 - SYS_SWPRINTF = 0x135 - SYS_VSWPRINT = 0x136 - SYS_VSWPRINTF = 0x136 - SYS_SWSCANF = 0x137 - SYS_REGCOMP = 0x138 - SYS_REGEXEC = 0x139 - SYS_GETWC = 0x140 - SYS_GETWCHAR = 0x141 - SYS_PUTWC = 0x142 - SYS_PUTWCHAR = 0x143 - SYS_UNGETWC = 0x144 - SYS_ICONV_OPEN = 0x145 - SYS_ICONV = 0x146 - SYS_ICONV_CLOSE = 0x147 - SYS_COLLRANGE = 0x150 - SYS_CCLASS = 0x151 - SYS_COLLORDER = 0x152 - SYS___DEMANGLE = 0x154 - SYS_FDOPEN = 0x155 - SYS___ERRNO = 0x156 - SYS___ERRNO2 = 0x157 - SYS___TERROR = 0x158 - SYS_MAXCOLL = 0x169 - SYS_DLLLOAD = 0x170 - SYS__EXIT = 0x174 - SYS_ACCESS = 0x175 - SYS_ALARM = 0x176 - SYS_CFGETISPEED = 0x177 - SYS_CFGETOSPEED = 0x178 - SYS_CFSETISPEED = 0x179 - SYS_CREAT = 0x180 - SYS_CTERMID = 0x181 - SYS_DUP = 0x182 - SYS_DUP2 = 0x183 - SYS_EXECL = 0x184 - SYS_EXECLE = 0x185 - SYS_EXECLP = 0x186 - SYS_EXECV = 0x187 - SYS_EXECVE = 0x188 - SYS_EXECVP = 0x189 - SYS_FSTAT = 0x190 - SYS_FSYNC = 0x191 - SYS_FTRUNCATE = 0x192 - SYS_GETCWD = 0x193 - SYS_GETEGID = 0x194 - SYS_GETEUID = 0x195 - SYS_GETGID = 0x196 - SYS_GETGRGID = 0x197 - SYS_GETGRNAM = 0x198 - SYS_GETGROUPS = 0x199 - SYS_PTHREAD_MUTEXATTR_DESTROY = 0x200 - SYS_PTHREAD_MUTEXATTR_SETKIND_NP = 0x201 - SYS_PTHREAD_MUTEXATTR_GETKIND_NP = 0x202 - SYS_PTHREAD_MUTEX_INIT = 0x203 - SYS_PTHREAD_MUTEX_DESTROY = 0x204 - SYS_PTHREAD_MUTEX_LOCK = 0x205 - SYS_PTHREAD_MUTEX_TRYLOCK = 0x206 - SYS_PTHREAD_MUTEX_UNLOCK = 0x207 - SYS_PTHREAD_ONCE = 0x209 - SYS_TW_OPEN = 0x210 - SYS_TW_FCNTL = 0x211 - SYS_PTHREAD_JOIN_D4_NP = 0x212 - SYS_PTHREAD_CONDATTR_SETKIND_NP = 0x213 - SYS_PTHREAD_CONDATTR_GETKIND_NP = 0x214 - SYS_EXTLINK_NP = 0x215 - SYS___PASSWD = 0x216 - SYS_SETGROUPS = 0x217 - SYS_INITGROUPS = 0x218 - SYS_WCSRCHR = 0x240 - SYS_SVC99 = 0x241 - SYS___SVC99 = 0x241 - SYS_WCSWCS = 0x242 - SYS_LOCALECO = 0x243 - SYS_LOCALECONV = 0x243 - SYS___LIBREL = 0x244 - SYS_RELEASE = 0x245 - SYS___RLSE = 0x245 - SYS_FLOCATE = 0x246 - SYS___FLOCT = 0x246 - SYS_FDELREC = 0x247 - SYS___FDLREC = 0x247 - SYS_FETCH = 0x248 - SYS___FETCH = 0x248 - SYS_QSORT = 0x249 - SYS___CLEANUPCATCH = 0x260 - SYS___CATCHMATCH = 0x261 - SYS___CLEAN2UPCATCH = 0x262 - SYS_GETPRIORITY = 0x270 - SYS_NICE = 0x271 - SYS_SETPRIORITY = 0x272 - SYS_GETITIMER = 0x273 - SYS_SETITIMER = 0x274 - SYS_MSGCTL = 0x275 - SYS_MSGGET = 0x276 - SYS_MSGRCV = 0x277 - SYS_MSGSND = 0x278 - SYS_MSGXRCV = 0x279 - SYS___MSGXR = 0x279 - SYS_SHMGET = 0x280 - SYS___GETIPC = 0x281 - SYS_SETGRENT = 0x282 - SYS_GETGRENT = 0x283 - SYS_ENDGRENT = 0x284 - SYS_SETPWENT = 0x285 - SYS_GETPWENT = 0x286 - SYS_ENDPWENT = 0x287 - SYS_BSD_SIGNAL = 0x288 - SYS_KILLPG = 0x289 - SYS_SIGSET = 0x290 - SYS_SIGSTACK = 0x291 - SYS_GETRLIMIT = 0x292 - SYS_SETRLIMIT = 0x293 - SYS_GETRUSAGE = 0x294 - SYS_MMAP = 0x295 - SYS_MPROTECT = 0x296 - SYS_MSYNC = 0x297 - SYS_MUNMAP = 0x298 - SYS_CONFSTR = 0x299 - SYS___NDMTRM = 0x300 - SYS_FTOK = 0x301 - SYS_BASENAME = 0x302 - SYS_DIRNAME = 0x303 - SYS_GETDTABLESIZE = 0x304 - SYS_MKSTEMP = 0x305 - SYS_MKTEMP = 0x306 - SYS_NFTW = 0x307 - SYS_GETWD = 0x308 - SYS_LOCKF = 0x309 - SYS_WORDEXP = 0x310 - SYS_WORDFREE = 0x311 - SYS_GETPGID = 0x312 - SYS_GETSID = 0x313 - SYS___UTMPXNAME = 0x314 - SYS_CUSERID = 0x315 - SYS_GETPASS = 0x316 - SYS_FNMATCH = 0x317 - SYS_FTW = 0x318 - SYS_GETW = 0x319 - SYS_ACOSH = 0x320 - SYS_ASINH = 0x321 - SYS_ATANH = 0x322 - SYS_CBRT = 0x323 - SYS_EXPM1 = 0x324 - SYS_ILOGB = 0x325 - SYS_LOGB = 0x326 - SYS_LOG1P = 0x327 - SYS_NEXTAFTER = 0x328 - SYS_RINT = 0x329 - SYS_SPAWN = 0x330 - SYS_SPAWNP = 0x331 - SYS_GETLOGIN_UU = 0x332 - SYS_ECVT = 0x333 - SYS_FCVT = 0x334 - SYS_GCVT = 0x335 - SYS_ACCEPT = 0x336 - SYS_BIND = 0x337 - SYS_CONNECT = 0x338 - SYS_ENDHOSTENT = 0x339 - SYS_GETHOSTENT = 0x340 - SYS_GETHOSTID = 0x341 - SYS_GETHOSTNAME = 0x342 - SYS_GETNETBYADDR = 0x343 - SYS_GETNETBYNAME = 0x344 - SYS_GETNETENT = 0x345 - SYS_GETPEERNAME = 0x346 - SYS_GETPROTOBYNAME = 0x347 - SYS_GETPROTOBYNUMBER = 0x348 - SYS_GETPROTOENT = 0x349 - SYS_INET_LNAOF = 0x350 - SYS_INET_MAKEADDR = 0x351 - SYS_INET_NETOF = 0x352 - SYS_INET_NETWORK = 0x353 - SYS_INET_NTOA = 0x354 - SYS_IOCTL = 0x355 - SYS_LISTEN = 0x356 - SYS_READV = 0x357 - SYS_RECV = 0x358 - SYS_RECVFROM = 0x359 - SYS_SETHOSTENT = 0x360 - SYS_SETNETENT = 0x361 - SYS_SETPEER = 0x362 - SYS_SETPROTOENT = 0x363 - SYS_SETSERVENT = 0x364 - SYS_SETSOCKOPT = 0x365 - SYS_SHUTDOWN = 0x366 - SYS_SOCKET = 0x367 - SYS_SOCKETPAIR = 0x368 - SYS_WRITEV = 0x369 - SYS_ENDNETENT = 0x370 - SYS_CLOSELOG = 0x371 - SYS_OPENLOG = 0x372 - SYS_SETLOGMASK = 0x373 - SYS_SYSLOG = 0x374 - SYS_PTSNAME = 0x375 - SYS_SETREUID = 0x376 - SYS_SETREGID = 0x377 - SYS_REALPATH = 0x378 - SYS___SIGNGAM = 0x379 - SYS_POLL = 0x380 - SYS_REXEC = 0x381 - SYS___ISASCII2 = 0x382 - SYS___TOASCII2 = 0x383 - SYS_CHPRIORITY = 0x384 - SYS_PTHREAD_ATTR_SETSYNCTYPE_NP = 0x385 - SYS_PTHREAD_ATTR_GETSYNCTYPE_NP = 0x386 - SYS_PTHREAD_SET_LIMIT_NP = 0x387 - SYS___STNETENT = 0x388 - SYS___STPROTOENT = 0x389 - SYS___SELECT1 = 0x390 - SYS_PTHREAD_SECURITY_NP = 0x391 - SYS___CHECK_RESOURCE_AUTH_NP = 0x392 - SYS___CONVERT_ID_NP = 0x393 - SYS___OPENVMREL = 0x394 - SYS_WMEMCHR = 0x395 - SYS_WMEMCMP = 0x396 - SYS_WMEMCPY = 0x397 - SYS_WMEMMOVE = 0x398 - SYS_WMEMSET = 0x399 - SYS___FPUTWC = 0x400 - SYS___PUTWC = 0x401 - SYS___PWCHAR = 0x402 - SYS___WCSFTM = 0x403 - SYS___WCSTOK = 0x404 - SYS___WCWDTH = 0x405 - SYS_T_ACCEPT = 0x409 - SYS_T_GETINFO = 0x410 - SYS_T_GETPROTADDR = 0x411 - SYS_T_GETSTATE = 0x412 - SYS_T_LISTEN = 0x413 - SYS_T_LOOK = 0x414 - SYS_T_OPEN = 0x415 - SYS_T_OPTMGMT = 0x416 - SYS_T_RCV = 0x417 - SYS_T_RCVCONNECT = 0x418 - SYS_T_RCVDIS = 0x419 - SYS_T_SNDUDATA = 0x420 - SYS_T_STRERROR = 0x421 - SYS_T_SYNC = 0x422 - SYS_T_UNBIND = 0x423 - SYS___T_ERRNO = 0x424 - SYS___RECVMSG2 = 0x425 - SYS___SENDMSG2 = 0x426 - SYS_FATTACH = 0x427 - SYS_FDETACH = 0x428 - SYS_GETMSG = 0x429 - SYS_GETCONTEXT = 0x430 - SYS_SETCONTEXT = 0x431 - SYS_MAKECONTEXT = 0x432 - SYS_SWAPCONTEXT = 0x433 - SYS_PTHREAD_GETSPECIFIC_D8_NP = 0x434 - SYS_GETCLIENTID = 0x470 - SYS___GETCLIENTID = 0x471 - SYS_GETSTABLESIZE = 0x472 - SYS_GETIBMOPT = 0x473 - SYS_GETIBMSOCKOPT = 0x474 - SYS_GIVESOCKET = 0x475 - SYS_IBMSFLUSH = 0x476 - SYS_MAXDESC = 0x477 - SYS_SETIBMOPT = 0x478 - SYS_SETIBMSOCKOPT = 0x479 - SYS___SERVER_PWU = 0x480 - SYS_PTHREAD_TAG_NP = 0x481 - SYS___CONSOLE = 0x482 - SYS___WSINIT = 0x483 - SYS___IPTCPN = 0x489 - SYS___SERVER_CLASSIFY = 0x490 - SYS___HEAPRPT = 0x496 - SYS___ISBFP = 0x500 - SYS___FP_CAST = 0x501 - SYS___CERTIFICATE = 0x502 - SYS_SEND_FILE = 0x503 - SYS_AIO_CANCEL = 0x504 - SYS_AIO_ERROR = 0x505 - SYS_AIO_READ = 0x506 - SYS_AIO_RETURN = 0x507 - SYS_AIO_SUSPEND = 0x508 - SYS_AIO_WRITE = 0x509 - SYS_PTHREAD_RWLOCK_TRYWRLOCK = 0x510 - SYS_PTHREAD_RWLOCK_UNLOCK = 0x511 - SYS_PTHREAD_RWLOCK_WRLOCK = 0x512 - SYS_PTHREAD_RWLOCKATTR_GETPSHARED = 0x513 - SYS_PTHREAD_RWLOCKATTR_SETPSHARED = 0x514 - SYS_PTHREAD_RWLOCKATTR_INIT = 0x515 - SYS_PTHREAD_RWLOCKATTR_DESTROY = 0x516 - SYS___CTTBL = 0x517 - SYS_PTHREAD_MUTEXATTR_SETTYPE = 0x518 - SYS_PTHREAD_MUTEXATTR_GETTYPE = 0x519 - SYS___FP_UNORDERED = 0x520 - SYS___FP_READ_RND = 0x521 - SYS___FP_READ_RND_B = 0x522 - SYS___FP_SWAP_RND = 0x523 - SYS___FP_SWAP_RND_B = 0x524 - SYS___FP_LEVEL = 0x525 - SYS___FP_BTOH = 0x526 - SYS___FP_HTOB = 0x527 - SYS___FPC_RD = 0x528 - SYS___FPC_WR = 0x529 - SYS_PTHREAD_SETCANCELTYPE = 0x600 - SYS_PTHREAD_TESTCANCEL = 0x601 - SYS___ATANF_B = 0x602 - SYS___ATANL_B = 0x603 - SYS___CEILF_B = 0x604 - SYS___CEILL_B = 0x605 - SYS___COSF_B = 0x606 - SYS___COSL_B = 0x607 - SYS___FABSF_B = 0x608 - SYS___FABSL_B = 0x609 - SYS___SINF_B = 0x610 - SYS___SINL_B = 0x611 - SYS___TANF_B = 0x612 - SYS___TANL_B = 0x613 - SYS___TANHF_B = 0x614 - SYS___TANHL_B = 0x615 - SYS___ACOSF_B = 0x616 - SYS___ACOSL_B = 0x617 - SYS___ASINF_B = 0x618 - SYS___ASINL_B = 0x619 - SYS___LOGF_B = 0x620 - SYS___LOGL_B = 0x621 - SYS___LOG10F_B = 0x622 - SYS___LOG10L_B = 0x623 - SYS___POWF_B = 0x624 - SYS___POWL_B = 0x625 - SYS___SINHF_B = 0x626 - SYS___SINHL_B = 0x627 - SYS___SQRTF_B = 0x628 - SYS___SQRTL_B = 0x629 - SYS___MODFL_B = 0x630 - SYS_ABSF = 0x631 - SYS_ABSL = 0x632 - SYS_ACOSF = 0x633 - SYS_ACOSL = 0x634 - SYS_ASINF = 0x635 - SYS_ASINL = 0x636 - SYS_ATAN2F = 0x637 - SYS_ATAN2L = 0x638 - SYS_ATANF = 0x639 - SYS_COSHL = 0x640 - SYS_EXPF = 0x641 - SYS_EXPL = 0x642 - SYS_TANHF = 0x643 - SYS_TANHL = 0x644 - SYS_LOG10F = 0x645 - SYS_LOG10L = 0x646 - SYS_LOGF = 0x647 - SYS_LOGL = 0x648 - SYS_POWF = 0x649 - SYS_SINHL = 0x650 - SYS_TANF = 0x651 - SYS_TANL = 0x652 - SYS_FABSF = 0x653 - SYS_FABSL = 0x654 - SYS_FLOORF = 0x655 - SYS_FLOORL = 0x656 - SYS_FMODF = 0x657 - SYS_FMODL = 0x658 - SYS_FREXPF = 0x659 - SYS___CHATTR = 0x660 - SYS___FCHATTR = 0x661 - SYS___TOCCSID = 0x662 - SYS___CSNAMETYPE = 0x663 - SYS___TOCSNAME = 0x664 - SYS___CCSIDTYPE = 0x665 - SYS___AE_CORRESTBL_QUERY = 0x666 - SYS___AE_AUTOCONVERT_STATE = 0x667 - SYS_DN_FIND = 0x668 - SYS___GETHOSTBYADDR_A = 0x669 - SYS___MBLEN_SB_A = 0x670 - SYS___MBLEN_STD_A = 0x671 - SYS___MBLEN_UTF = 0x672 - SYS___MBSTOWCS_A = 0x673 - SYS___MBSTOWCS_STD_A = 0x674 - SYS___MBTOWC_A = 0x675 - SYS___MBTOWC_ISO1 = 0x676 - SYS___MBTOWC_SBCS = 0x677 - SYS___MBTOWC_MBCS = 0x678 - SYS___MBTOWC_UTF = 0x679 - SYS___CSID_A = 0x680 - SYS___CSID_STD_A = 0x681 - SYS___WCSID_A = 0x682 - SYS___WCSID_STD_A = 0x683 - SYS___WCTOMB_A = 0x684 - SYS___WCTOMB_ISO1 = 0x685 - SYS___WCTOMB_STD_A = 0x686 - SYS___WCTOMB_UTF = 0x687 - SYS___WCWIDTH_A = 0x688 - SYS___GETGRNAM_R_A = 0x689 - SYS___READDIR_R_A = 0x690 - SYS___E2A_S = 0x691 - SYS___FNMATCH_A = 0x692 - SYS___FNMATCH_C_A = 0x693 - SYS___EXECL_A = 0x694 - SYS___FNMATCH_STD_A = 0x695 - SYS___REGCOMP_A = 0x696 - SYS___REGCOMP_STD_A = 0x697 - SYS___REGERROR_A = 0x698 - SYS___REGERROR_STD_A = 0x699 - SYS___SWPRINTF_A = 0x700 - SYS___FSCANF_A = 0x701 - SYS___SCANF_A = 0x702 - SYS___SSCANF_A = 0x703 - SYS___SWSCANF_A = 0x704 - SYS___ATOF_A = 0x705 - SYS___ATOI_A = 0x706 - SYS___ATOL_A = 0x707 - SYS___STRTOD_A = 0x708 - SYS___STRTOL_A = 0x709 - SYS___L64A_A = 0x710 - SYS___STRERROR_A = 0x711 - SYS___PERROR_A = 0x712 - SYS___FETCH_A = 0x713 - SYS___GETENV_A = 0x714 - SYS___MKSTEMP_A = 0x717 - SYS___PTSNAME_A = 0x718 - SYS___PUTENV_A = 0x719 - SYS___CHDIR_A = 0x720 - SYS___CHOWN_A = 0x721 - SYS___CHROOT_A = 0x722 - SYS___GETCWD_A = 0x723 - SYS___GETWD_A = 0x724 - SYS___LCHOWN_A = 0x725 - SYS___LINK_A = 0x726 - SYS___PATHCONF_A = 0x727 - SYS___IF_NAMEINDEX_A = 0x728 - SYS___READLINK_A = 0x729 - SYS___EXTLINK_NP_A = 0x730 - SYS___ISALNUM_A = 0x731 - SYS___ISALPHA_A = 0x732 - SYS___A2E_S = 0x733 - SYS___ISCNTRL_A = 0x734 - SYS___ISDIGIT_A = 0x735 - SYS___ISGRAPH_A = 0x736 - SYS___ISLOWER_A = 0x737 - SYS___ISPRINT_A = 0x738 - SYS___ISPUNCT_A = 0x739 - SYS___ISWALPHA_A = 0x740 - SYS___A2E_L = 0x741 - SYS___ISWCNTRL_A = 0x742 - SYS___ISWDIGIT_A = 0x743 - SYS___ISWGRAPH_A = 0x744 - SYS___ISWLOWER_A = 0x745 - SYS___ISWPRINT_A = 0x746 - SYS___ISWPUNCT_A = 0x747 - SYS___ISWSPACE_A = 0x748 - SYS___ISWUPPER_A = 0x749 - SYS___REMOVE_A = 0x750 - SYS___RENAME_A = 0x751 - SYS___TMPNAM_A = 0x752 - SYS___FOPEN_A = 0x753 - SYS___FREOPEN_A = 0x754 - SYS___CUSERID_A = 0x755 - SYS___POPEN_A = 0x756 - SYS___TEMPNAM_A = 0x757 - SYS___FTW_A = 0x758 - SYS___GETGRENT_A = 0x759 - SYS___INET_NTOP_A = 0x760 - SYS___GETPASS_A = 0x761 - SYS___GETPWENT_A = 0x762 - SYS___GETPWNAM_A = 0x763 - SYS___GETPWUID_A = 0x764 - SYS_____CHECK_RESOURCE_AUTH_NP_A = 0x765 - SYS___CHECKSCHENV_A = 0x766 - SYS___CONNECTSERVER_A = 0x767 - SYS___CONNECTWORKMGR_A = 0x768 - SYS_____CONSOLE_A = 0x769 - SYS___MSGSND_A = 0x770 - SYS___MSGXRCV_A = 0x771 - SYS___NFTW_A = 0x772 - SYS_____PASSWD_A = 0x773 - SYS___PTHREAD_SECURITY_NP_A = 0x774 - SYS___QUERYMETRICS_A = 0x775 - SYS___QUERYSCHENV = 0x776 - SYS___READV_A = 0x777 - SYS_____SERVER_CLASSIFY_A = 0x778 - SYS_____SERVER_INIT_A = 0x779 - SYS___W_GETPSENT_A = 0x780 - SYS___WRITEV_A = 0x781 - SYS___W_STATFS_A = 0x782 - SYS___W_STATVFS_A = 0x783 - SYS___FPUTC_A = 0x784 - SYS___PUTCHAR_A = 0x785 - SYS___PUTS_A = 0x786 - SYS___FGETS_A = 0x787 - SYS___GETS_A = 0x788 - SYS___FPUTS_A = 0x789 - SYS___PUTC_A = 0x790 - SYS___AE_THREAD_SETMODE = 0x791 - SYS___AE_THREAD_SWAPMODE = 0x792 - SYS___GETNETBYADDR_A = 0x793 - SYS___GETNETBYNAME_A = 0x794 - SYS___GETNETENT_A = 0x795 - SYS___GETPROTOBYNAME_A = 0x796 - SYS___GETPROTOBYNUMBER_A = 0x797 - SYS___GETPROTOENT_A = 0x798 - SYS___GETSERVBYNAME_A = 0x799 - SYS_ACL_FIRST_ENTRY = 0x800 - SYS_ACL_GET_ENTRY = 0x801 - SYS_ACL_VALID = 0x802 - SYS_ACL_CREATE_ENTRY = 0x803 - SYS_ACL_DELETE_ENTRY = 0x804 - SYS_ACL_UPDATE_ENTRY = 0x805 - SYS_ACL_DELETE_FD = 0x806 - SYS_ACL_DELETE_FILE = 0x807 - SYS_ACL_GET_FD = 0x808 - SYS_ACL_GET_FILE = 0x809 - SYS___ERFL_B = 0x810 - SYS___ERFCL_B = 0x811 - SYS___LGAMMAL_B = 0x812 - SYS___SETHOOKEVENTS = 0x813 - SYS_IF_NAMETOINDEX = 0x814 - SYS_IF_INDEXTONAME = 0x815 - SYS_IF_NAMEINDEX = 0x816 - SYS_IF_FREENAMEINDEX = 0x817 - SYS_GETADDRINFO = 0x818 - SYS_GETNAMEINFO = 0x819 - SYS___DYNFREE_A = 0x820 - SYS___RES_QUERY_A = 0x821 - SYS___RES_SEARCH_A = 0x822 - SYS___RES_QUERYDOMAIN_A = 0x823 - SYS___RES_MKQUERY_A = 0x824 - SYS___RES_SEND_A = 0x825 - SYS___DN_EXPAND_A = 0x826 - SYS___DN_SKIPNAME_A = 0x827 - SYS___DN_COMP_A = 0x828 - SYS___DN_FIND_A = 0x829 - SYS___INET_NTOA_A = 0x830 - SYS___INET_NETWORK_A = 0x831 - SYS___ACCEPT_A = 0x832 - SYS___ACCEPT_AND_RECV_A = 0x833 - SYS___BIND_A = 0x834 - SYS___CONNECT_A = 0x835 - SYS___GETPEERNAME_A = 0x836 - SYS___GETSOCKNAME_A = 0x837 - SYS___RECVFROM_A = 0x838 - SYS___SENDTO_A = 0x839 - SYS___LCHATTR = 0x840 - SYS___WRITEDOWN = 0x841 - SYS_PTHREAD_MUTEX_INIT2 = 0x842 - SYS___ACOSHF_B = 0x843 - SYS___ACOSHL_B = 0x844 - SYS___ASINHF_B = 0x845 - SYS___ASINHL_B = 0x846 - SYS___ATANHF_B = 0x847 - SYS___ATANHL_B = 0x848 - SYS___CBRTF_B = 0x849 - SYS___EXP2F_B = 0x850 - SYS___EXP2L_B = 0x851 - SYS___EXPM1F_B = 0x852 - SYS___EXPM1L_B = 0x853 - SYS___FDIMF_B = 0x854 - SYS___FDIM_B = 0x855 - SYS___FDIML_B = 0x856 - SYS___HYPOTF_B = 0x857 - SYS___HYPOTL_B = 0x858 - SYS___LOG1PF_B = 0x859 - SYS___REMQUOF_B = 0x860 - SYS___REMQUO_B = 0x861 - SYS___REMQUOL_B = 0x862 - SYS___TGAMMAF_B = 0x863 - SYS___TGAMMA_B = 0x864 - SYS___TGAMMAL_B = 0x865 - SYS___TRUNCF_B = 0x866 - SYS___TRUNC_B = 0x867 - SYS___TRUNCL_B = 0x868 - SYS___LGAMMAF_B = 0x869 - SYS_ASINHF = 0x870 - SYS_ASINHL = 0x871 - SYS_ATANHF = 0x872 - SYS_ATANHL = 0x873 - SYS_CBRTF = 0x874 - SYS_CBRTL = 0x875 - SYS_COPYSIGNF = 0x876 - SYS_CPYSIGNF = 0x876 - SYS_COPYSIGNL = 0x877 - SYS_CPYSIGNL = 0x877 - SYS_COTANF = 0x878 - SYS___COTANF = 0x878 - SYS_COTAN = 0x879 - SYS___COTAN = 0x879 - SYS_FDIM = 0x881 - SYS_FDIML = 0x882 - SYS_HYPOTF = 0x883 - SYS_HYPOTL = 0x884 - SYS_LOG1PF = 0x885 - SYS_LOG1PL = 0x886 - SYS_LOG2F = 0x887 - SYS_LOG2 = 0x888 - SYS_LOG2L = 0x889 - SYS_TGAMMA = 0x890 - SYS_TGAMMAL = 0x891 - SYS_TRUNCF = 0x892 - SYS_TRUNC = 0x893 - SYS_TRUNCL = 0x894 - SYS_LGAMMAF = 0x895 - SYS_LGAMMAL = 0x896 - SYS_LROUNDF = 0x897 - SYS_LROUND = 0x898 - SYS_ERFF = 0x899 - SYS___COSHF_H = 0x900 - SYS___COSHL_H = 0x901 - SYS___COTAN_H = 0x902 - SYS___COTANF_H = 0x903 - SYS___COTANL_H = 0x904 - SYS___ERF_H = 0x905 - SYS___ERFF_H = 0x906 - SYS___ERFL_H = 0x907 - SYS___ERFC_H = 0x908 - SYS___ERFCF_H = 0x909 - SYS___FDIMF_H = 0x910 - SYS___FDIML_H = 0x911 - SYS___FMOD_H = 0x912 - SYS___FMODF_H = 0x913 - SYS___FMODL_H = 0x914 - SYS___GAMMA_H = 0x915 - SYS___HYPOT_H = 0x916 - SYS___ILOGB_H = 0x917 - SYS___LGAMMA_H = 0x918 - SYS___LGAMMAF_H = 0x919 - SYS___LOG2L_H = 0x920 - SYS___LOG1P_H = 0x921 - SYS___LOG10_H = 0x922 - SYS___LOG10F_H = 0x923 - SYS___LOG10L_H = 0x924 - SYS___LROUND_H = 0x925 - SYS___LROUNDF_H = 0x926 - SYS___NEXTAFTER_H = 0x927 - SYS___POW_H = 0x928 - SYS___POWF_H = 0x929 - SYS___SINL_H = 0x930 - SYS___SINH_H = 0x931 - SYS___SINHF_H = 0x932 - SYS___SINHL_H = 0x933 - SYS___SQRT_H = 0x934 - SYS___SQRTF_H = 0x935 - SYS___SQRTL_H = 0x936 - SYS___TAN_H = 0x937 - SYS___TANF_H = 0x938 - SYS___TANL_H = 0x939 - SYS___TRUNCF_H = 0x940 - SYS___TRUNCL_H = 0x941 - SYS___COSH_H = 0x942 - SYS___LE_DEBUG_SET_RESUME_MCH = 0x943 - SYS_VFSCANF = 0x944 - SYS_VSCANF = 0x946 - SYS_VSSCANF = 0x948 - SYS_IMAXABS = 0x950 - SYS_IMAXDIV = 0x951 - SYS_STRTOIMAX = 0x952 - SYS_STRTOUMAX = 0x953 - SYS_WCSTOIMAX = 0x954 - SYS_WCSTOUMAX = 0x955 - SYS_ATOLL = 0x956 - SYS_STRTOF = 0x957 - SYS_STRTOLD = 0x958 - SYS_WCSTOF = 0x959 - SYS_INET6_RTH_GETADDR = 0x960 - SYS_INET6_OPT_INIT = 0x961 - SYS_INET6_OPT_APPEND = 0x962 - SYS_INET6_OPT_FINISH = 0x963 - SYS_INET6_OPT_SET_VAL = 0x964 - SYS_INET6_OPT_NEXT = 0x965 - SYS_INET6_OPT_FIND = 0x966 - SYS_INET6_OPT_GET_VAL = 0x967 - SYS___POW_I = 0x987 - SYS___POW_I_B = 0x988 - SYS___POW_I_H = 0x989 - SYS___CABS_H = 0x990 - SYS_CABSF = 0x991 - SYS___CABSF_B = 0x992 - SYS___CABSF_H = 0x993 - SYS_CABSL = 0x994 - SYS___CABSL_B = 0x995 - SYS___CABSL_H = 0x996 - SYS_CACOS = 0x997 - SYS___CACOS_B = 0x998 - SYS___CACOS_H = 0x999 + SYS_LOG = 0x17 // 23 + SYS_COSH = 0x18 // 24 + SYS_TANH = 0x19 // 25 + SYS_EXP = 0x1A // 26 + SYS_MODF = 0x1B // 27 + SYS_LOG10 = 0x1C // 28 + SYS_FREXP = 0x1D // 29 + SYS_LDEXP = 0x1E // 30 + SYS_CEIL = 0x1F // 31 + SYS_POW = 0x20 // 32 + SYS_SQRT = 0x21 // 33 + SYS_FLOOR = 0x22 // 34 + SYS_J1 = 0x23 // 35 + SYS_FABS = 0x24 // 36 + SYS_FMOD = 0x25 // 37 + SYS_J0 = 0x26 // 38 + SYS_YN = 0x27 // 39 + SYS_JN = 0x28 // 40 + SYS_Y0 = 0x29 // 41 + SYS_Y1 = 0x2A // 42 + SYS_HYPOT = 0x2B // 43 + SYS_ERF = 0x2C // 44 + SYS_ERFC = 0x2D // 45 + SYS_GAMMA = 0x2E // 46 + SYS_ISALPHA = 0x30 // 48 + SYS_ISALNUM = 0x31 // 49 + SYS_ISLOWER = 0x32 // 50 + SYS_ISCNTRL = 0x33 // 51 + SYS_ISDIGIT = 0x34 // 52 + SYS_ISGRAPH = 0x35 // 53 + SYS_ISUPPER = 0x36 // 54 + SYS_ISPRINT = 0x37 // 55 + SYS_ISPUNCT = 0x38 // 56 + SYS_ISSPACE = 0x39 // 57 + SYS_SETLOCAL = 0x3A // 58 + SYS_SETLOCALE = 0x3A // 58 + SYS_ISXDIGIT = 0x3B // 59 + SYS_TOLOWER = 0x3C // 60 + SYS_TOUPPER = 0x3D // 61 + SYS_ASIN = 0x3E // 62 + SYS_SIN = 0x3F // 63 + SYS_COS = 0x40 // 64 + SYS_TAN = 0x41 // 65 + SYS_SINH = 0x42 // 66 + SYS_ACOS = 0x43 // 67 + SYS_ATAN = 0x44 // 68 + SYS_ATAN2 = 0x45 // 69 + SYS_FTELL = 0x46 // 70 + SYS_FGETPOS = 0x47 // 71 + SYS_FSEEK = 0x48 // 72 + SYS_FSETPOS = 0x49 // 73 + SYS_FERROR = 0x4A // 74 + SYS_REWIND = 0x4B // 75 + SYS_CLEARERR = 0x4C // 76 + SYS_FEOF = 0x4D // 77 + SYS_ATOL = 0x4E // 78 + SYS_PERROR = 0x4F // 79 + SYS_ATOF = 0x50 // 80 + SYS_ATOI = 0x51 // 81 + SYS_RAND = 0x52 // 82 + SYS_STRTOD = 0x53 // 83 + SYS_STRTOL = 0x54 // 84 + SYS_STRTOUL = 0x55 // 85 + SYS_MALLOC = 0x56 // 86 + SYS_SRAND = 0x57 // 87 + SYS_CALLOC = 0x58 // 88 + SYS_FREE = 0x59 // 89 + SYS_EXIT = 0x5A // 90 + SYS_REALLOC = 0x5B // 91 + SYS_ABORT = 0x5C // 92 + SYS___ABORT = 0x5C // 92 + SYS_ATEXIT = 0x5D // 93 + SYS_RAISE = 0x5E // 94 + SYS_SETJMP = 0x5F // 95 + SYS_LONGJMP = 0x60 // 96 + SYS_SIGNAL = 0x61 // 97 + SYS_TMPNAM = 0x62 // 98 + SYS_REMOVE = 0x63 // 99 + SYS_RENAME = 0x64 // 100 + SYS_TMPFILE = 0x65 // 101 + SYS_FREOPEN = 0x66 // 102 + SYS_FCLOSE = 0x67 // 103 + SYS_FFLUSH = 0x68 // 104 + SYS_FOPEN = 0x69 // 105 + SYS_FSCANF = 0x6A // 106 + SYS_SETBUF = 0x6B // 107 + SYS_SETVBUF = 0x6C // 108 + SYS_FPRINTF = 0x6D // 109 + SYS_SSCANF = 0x6E // 110 + SYS_PRINTF = 0x6F // 111 + SYS_SCANF = 0x70 // 112 + SYS_SPRINTF = 0x71 // 113 + SYS_FGETC = 0x72 // 114 + SYS_VFPRINTF = 0x73 // 115 + SYS_VPRINTF = 0x74 // 116 + SYS_VSPRINTF = 0x75 // 117 + SYS_GETC = 0x76 // 118 + SYS_FGETS = 0x77 // 119 + SYS_FPUTC = 0x78 // 120 + SYS_FPUTS = 0x79 // 121 + SYS_PUTCHAR = 0x7A // 122 + SYS_GETCHAR = 0x7B // 123 + SYS_GETS = 0x7C // 124 + SYS_PUTC = 0x7D // 125 + SYS_FWRITE = 0x7E // 126 + SYS_PUTS = 0x7F // 127 + SYS_UNGETC = 0x80 // 128 + SYS_FREAD = 0x81 // 129 + SYS_WCSTOMBS = 0x82 // 130 + SYS_MBTOWC = 0x83 // 131 + SYS_WCTOMB = 0x84 // 132 + SYS_MBSTOWCS = 0x85 // 133 + SYS_WCSCPY = 0x86 // 134 + SYS_WCSCAT = 0x87 // 135 + SYS_WCSCHR = 0x88 // 136 + SYS_WCSCMP = 0x89 // 137 + SYS_WCSNCMP = 0x8A // 138 + SYS_WCSCSPN = 0x8B // 139 + SYS_WCSLEN = 0x8C // 140 + SYS_WCSNCAT = 0x8D // 141 + SYS_WCSSPN = 0x8E // 142 + SYS_WCSNCPY = 0x8F // 143 + SYS_ABS = 0x90 // 144 + SYS_DIV = 0x91 // 145 + SYS_LABS = 0x92 // 146 + SYS_STRNCPY = 0x93 // 147 + SYS_MEMCPY = 0x94 // 148 + SYS_MEMMOVE = 0x95 // 149 + SYS_STRCPY = 0x96 // 150 + SYS_STRCMP = 0x97 // 151 + SYS_STRCAT = 0x98 // 152 + SYS_STRNCAT = 0x99 // 153 + SYS_MEMCMP = 0x9A // 154 + SYS_MEMCHR = 0x9B // 155 + SYS_STRCOLL = 0x9C // 156 + SYS_STRNCMP = 0x9D // 157 + SYS_STRXFRM = 0x9E // 158 + SYS_STRRCHR = 0x9F // 159 + SYS_STRCHR = 0xA0 // 160 + SYS_STRCSPN = 0xA1 // 161 + SYS_STRPBRK = 0xA2 // 162 + SYS_MEMSET = 0xA3 // 163 + SYS_STRSPN = 0xA4 // 164 + SYS_STRSTR = 0xA5 // 165 + SYS_STRTOK = 0xA6 // 166 + SYS_DIFFTIME = 0xA7 // 167 + SYS_STRERROR = 0xA8 // 168 + SYS_STRLEN = 0xA9 // 169 + SYS_CLOCK = 0xAA // 170 + SYS_CTIME = 0xAB // 171 + SYS_MKTIME = 0xAC // 172 + SYS_TIME = 0xAD // 173 + SYS_ASCTIME = 0xAE // 174 + SYS_MBLEN = 0xAF // 175 + SYS_GMTIME = 0xB0 // 176 + SYS_LOCALTIM = 0xB1 // 177 + SYS_LOCALTIME = 0xB1 // 177 + SYS_STRFTIME = 0xB2 // 178 + SYS___GETCB = 0xB4 // 180 + SYS_FUPDATE = 0xB5 // 181 + SYS___FUPDT = 0xB5 // 181 + SYS_CLRMEMF = 0xBD // 189 + SYS___CLRMF = 0xBD // 189 + SYS_FETCHEP = 0xBF // 191 + SYS___FTCHEP = 0xBF // 191 + SYS_FLDATA = 0xC1 // 193 + SYS___FLDATA = 0xC1 // 193 + SYS_DYNFREE = 0xC2 // 194 + SYS___DYNFRE = 0xC2 // 194 + SYS_DYNALLOC = 0xC3 // 195 + SYS___DYNALL = 0xC3 // 195 + SYS___CDUMP = 0xC4 // 196 + SYS_CSNAP = 0xC5 // 197 + SYS___CSNAP = 0xC5 // 197 + SYS_CTRACE = 0xC6 // 198 + SYS___CTRACE = 0xC6 // 198 + SYS___CTEST = 0xC7 // 199 + SYS_SETENV = 0xC8 // 200 + SYS___SETENV = 0xC8 // 200 + SYS_CLEARENV = 0xC9 // 201 + SYS___CLRENV = 0xC9 // 201 + SYS___REGCOMP_STD = 0xEA // 234 + SYS_NL_LANGINFO = 0xFC // 252 + SYS_GETSYNTX = 0xFD // 253 + SYS_ISBLANK = 0xFE // 254 + SYS___ISBLNK = 0xFE // 254 + SYS_ISWALNUM = 0xFF // 255 + SYS_ISWALPHA = 0x100 // 256 + SYS_ISWBLANK = 0x101 // 257 + SYS___ISWBLK = 0x101 // 257 + SYS_ISWCNTRL = 0x102 // 258 + SYS_ISWDIGIT = 0x103 // 259 + SYS_ISWGRAPH = 0x104 // 260 + SYS_ISWLOWER = 0x105 // 261 + SYS_ISWPRINT = 0x106 // 262 + SYS_ISWPUNCT = 0x107 // 263 + SYS_ISWSPACE = 0x108 // 264 + SYS_ISWUPPER = 0x109 // 265 + SYS_ISWXDIGI = 0x10A // 266 + SYS_ISWXDIGIT = 0x10A // 266 + SYS_WCTYPE = 0x10B // 267 + SYS_ISWCTYPE = 0x10C // 268 + SYS_TOWLOWER = 0x10D // 269 + SYS_TOWUPPER = 0x10E // 270 + SYS_MBSINIT = 0x10F // 271 + SYS_WCTOB = 0x110 // 272 + SYS_MBRLEN = 0x111 // 273 + SYS_MBRTOWC = 0x112 // 274 + SYS_MBSRTOWC = 0x113 // 275 + SYS_MBSRTOWCS = 0x113 // 275 + SYS_WCRTOMB = 0x114 // 276 + SYS_WCSRTOMB = 0x115 // 277 + SYS_WCSRTOMBS = 0x115 // 277 + SYS___CSID = 0x116 // 278 + SYS___WCSID = 0x117 // 279 + SYS_STRPTIME = 0x118 // 280 + SYS___STRPTM = 0x118 // 280 + SYS_STRFMON = 0x119 // 281 + SYS___RPMTCH = 0x11A // 282 + SYS_WCSSTR = 0x11B // 283 + SYS_WCSTOK = 0x12C // 300 + SYS_WCSTOL = 0x12D // 301 + SYS_WCSTOD = 0x12E // 302 + SYS_WCSTOUL = 0x12F // 303 + SYS_WCSCOLL = 0x130 // 304 + SYS_WCSXFRM = 0x131 // 305 + SYS_WCSWIDTH = 0x132 // 306 + SYS_WCWIDTH = 0x133 // 307 + SYS_WCSFTIME = 0x134 // 308 + SYS_SWPRINTF = 0x135 // 309 + SYS_VSWPRINT = 0x136 // 310 + SYS_VSWPRINTF = 0x136 // 310 + SYS_SWSCANF = 0x137 // 311 + SYS_REGCOMP = 0x138 // 312 + SYS_REGEXEC = 0x139 // 313 + SYS_REGFREE = 0x13A // 314 + SYS_REGERROR = 0x13B // 315 + SYS_FGETWC = 0x13C // 316 + SYS_FGETWS = 0x13D // 317 + SYS_FPUTWC = 0x13E // 318 + SYS_FPUTWS = 0x13F // 319 + SYS_GETWC = 0x140 // 320 + SYS_GETWCHAR = 0x141 // 321 + SYS_PUTWC = 0x142 // 322 + SYS_PUTWCHAR = 0x143 // 323 + SYS_UNGETWC = 0x144 // 324 + SYS_ICONV_OPEN = 0x145 // 325 + SYS_ICONV = 0x146 // 326 + SYS_ICONV_CLOSE = 0x147 // 327 + SYS_ISMCCOLLEL = 0x14C // 332 + SYS_STRTOCOLL = 0x14D // 333 + SYS_COLLTOSTR = 0x14E // 334 + SYS_COLLEQUIV = 0x14F // 335 + SYS_COLLRANGE = 0x150 // 336 + SYS_CCLASS = 0x151 // 337 + SYS_COLLORDER = 0x152 // 338 + SYS___DEMANGLE = 0x154 // 340 + SYS_FDOPEN = 0x155 // 341 + SYS___ERRNO = 0x156 // 342 + SYS___ERRNO2 = 0x157 // 343 + SYS___TERROR = 0x158 // 344 + SYS_MAXCOLL = 0x169 // 361 + SYS_GETMCCOLL = 0x16A // 362 + SYS_GETWMCCOLL = 0x16B // 363 + SYS___ERR2AD = 0x16C // 364 + SYS_DLLQUERYFN = 0x16D // 365 + SYS_DLLQUERYVAR = 0x16E // 366 + SYS_DLLFREE = 0x16F // 367 + SYS_DLLLOAD = 0x170 // 368 + SYS__EXIT = 0x174 // 372 + SYS_ACCESS = 0x175 // 373 + SYS_ALARM = 0x176 // 374 + SYS_CFGETISPEED = 0x177 // 375 + SYS_CFGETOSPEED = 0x178 // 376 + SYS_CFSETISPEED = 0x179 // 377 + SYS_CFSETOSPEED = 0x17A // 378 + SYS_CHDIR = 0x17B // 379 + SYS_CHMOD = 0x17C // 380 + SYS_CHOWN = 0x17D // 381 + SYS_CLOSE = 0x17E // 382 + SYS_CLOSEDIR = 0x17F // 383 + SYS_CREAT = 0x180 // 384 + SYS_CTERMID = 0x181 // 385 + SYS_DUP = 0x182 // 386 + SYS_DUP2 = 0x183 // 387 + SYS_EXECL = 0x184 // 388 + SYS_EXECLE = 0x185 // 389 + SYS_EXECLP = 0x186 // 390 + SYS_EXECV = 0x187 // 391 + SYS_EXECVE = 0x188 // 392 + SYS_EXECVP = 0x189 // 393 + SYS_FCHMOD = 0x18A // 394 + SYS_FCHOWN = 0x18B // 395 + SYS_FCNTL = 0x18C // 396 + SYS_FILENO = 0x18D // 397 + SYS_FORK = 0x18E // 398 + SYS_FPATHCONF = 0x18F // 399 + SYS_FSTAT = 0x190 // 400 + SYS_FSYNC = 0x191 // 401 + SYS_FTRUNCATE = 0x192 // 402 + SYS_GETCWD = 0x193 // 403 + SYS_GETEGID = 0x194 // 404 + SYS_GETEUID = 0x195 // 405 + SYS_GETGID = 0x196 // 406 + SYS_GETGRGID = 0x197 // 407 + SYS_GETGRNAM = 0x198 // 408 + SYS_GETGROUPS = 0x199 // 409 + SYS_GETLOGIN = 0x19A // 410 + SYS_W_GETMNTENT = 0x19B // 411 + SYS_GETPGRP = 0x19C // 412 + SYS_GETPID = 0x19D // 413 + SYS_GETPPID = 0x19E // 414 + SYS_GETPWNAM = 0x19F // 415 + SYS_GETPWUID = 0x1A0 // 416 + SYS_GETUID = 0x1A1 // 417 + SYS_W_IOCTL = 0x1A2 // 418 + SYS_ISATTY = 0x1A3 // 419 + SYS_KILL = 0x1A4 // 420 + SYS_LINK = 0x1A5 // 421 + SYS_LSEEK = 0x1A6 // 422 + SYS_LSTAT = 0x1A7 // 423 + SYS_MKDIR = 0x1A8 // 424 + SYS_MKFIFO = 0x1A9 // 425 + SYS_MKNOD = 0x1AA // 426 + SYS_MOUNT = 0x1AB // 427 + SYS_OPEN = 0x1AC // 428 + SYS_OPENDIR = 0x1AD // 429 + SYS_PATHCONF = 0x1AE // 430 + SYS_PAUSE = 0x1AF // 431 + SYS_PIPE = 0x1B0 // 432 + SYS_W_GETPSENT = 0x1B1 // 433 + SYS_READ = 0x1B2 // 434 + SYS_READDIR = 0x1B3 // 435 + SYS_READLINK = 0x1B4 // 436 + SYS_REWINDDIR = 0x1B5 // 437 + SYS_RMDIR = 0x1B6 // 438 + SYS_SETEGID = 0x1B7 // 439 + SYS_SETEUID = 0x1B8 // 440 + SYS_SETGID = 0x1B9 // 441 + SYS_SETPGID = 0x1BA // 442 + SYS_SETSID = 0x1BB // 443 + SYS_SETUID = 0x1BC // 444 + SYS_SIGACTION = 0x1BD // 445 + SYS_SIGADDSET = 0x1BE // 446 + SYS_SIGDELSET = 0x1BF // 447 + SYS_SIGEMPTYSET = 0x1C0 // 448 + SYS_SIGFILLSET = 0x1C1 // 449 + SYS_SIGISMEMBER = 0x1C2 // 450 + SYS_SIGLONGJMP = 0x1C3 // 451 + SYS_SIGPENDING = 0x1C4 // 452 + SYS_SIGPROCMASK = 0x1C5 // 453 + SYS_SIGSETJMP = 0x1C6 // 454 + SYS_SIGSUSPEND = 0x1C7 // 455 + SYS_SLEEP = 0x1C8 // 456 + SYS_STAT = 0x1C9 // 457 + SYS_W_STATFS = 0x1CA // 458 + SYS_SYMLINK = 0x1CB // 459 + SYS_SYSCONF = 0x1CC // 460 + SYS_TCDRAIN = 0x1CD // 461 + SYS_TCFLOW = 0x1CE // 462 + SYS_TCFLUSH = 0x1CF // 463 + SYS_TCGETATTR = 0x1D0 // 464 + SYS_TCGETPGRP = 0x1D1 // 465 + SYS_TCSENDBREAK = 0x1D2 // 466 + SYS_TCSETATTR = 0x1D3 // 467 + SYS_TCSETPGRP = 0x1D4 // 468 + SYS_TIMES = 0x1D5 // 469 + SYS_TTYNAME = 0x1D6 // 470 + SYS_TZSET = 0x1D7 // 471 + SYS_UMASK = 0x1D8 // 472 + SYS_UMOUNT = 0x1D9 // 473 + SYS_UNAME = 0x1DA // 474 + SYS_UNLINK = 0x1DB // 475 + SYS_UTIME = 0x1DC // 476 + SYS_WAIT = 0x1DD // 477 + SYS_WAITPID = 0x1DE // 478 + SYS_WRITE = 0x1DF // 479 + SYS_CHAUDIT = 0x1E0 // 480 + SYS_FCHAUDIT = 0x1E1 // 481 + SYS_GETGROUPSBYNAME = 0x1E2 // 482 + SYS_SIGWAIT = 0x1E3 // 483 + SYS_PTHREAD_EXIT = 0x1E4 // 484 + SYS_PTHREAD_KILL = 0x1E5 // 485 + SYS_PTHREAD_ATTR_INIT = 0x1E6 // 486 + SYS_PTHREAD_ATTR_DESTROY = 0x1E7 // 487 + SYS_PTHREAD_ATTR_SETSTACKSIZE = 0x1E8 // 488 + SYS_PTHREAD_ATTR_GETSTACKSIZE = 0x1E9 // 489 + SYS_PTHREAD_ATTR_SETDETACHSTATE = 0x1EA // 490 + SYS_PTHREAD_ATTR_GETDETACHSTATE = 0x1EB // 491 + SYS_PTHREAD_ATTR_SETWEIGHT_NP = 0x1EC // 492 + SYS_PTHREAD_ATTR_GETWEIGHT_NP = 0x1ED // 493 + SYS_PTHREAD_CANCEL = 0x1EE // 494 + SYS_PTHREAD_CLEANUP_PUSH = 0x1EF // 495 + SYS_PTHREAD_CLEANUP_POP = 0x1F0 // 496 + SYS_PTHREAD_CONDATTR_INIT = 0x1F1 // 497 + SYS_PTHREAD_CONDATTR_DESTROY = 0x1F2 // 498 + SYS_PTHREAD_COND_INIT = 0x1F3 // 499 + SYS_PTHREAD_COND_DESTROY = 0x1F4 // 500 + SYS_PTHREAD_COND_SIGNAL = 0x1F5 // 501 + SYS_PTHREAD_COND_BROADCAST = 0x1F6 // 502 + SYS_PTHREAD_COND_WAIT = 0x1F7 // 503 + SYS_PTHREAD_COND_TIMEDWAIT = 0x1F8 // 504 + SYS_PTHREAD_CREATE = 0x1F9 // 505 + SYS_PTHREAD_DETACH = 0x1FA // 506 + SYS_PTHREAD_EQUAL = 0x1FB // 507 + SYS_PTHREAD_GETSPECIFIC = 0x1FC // 508 + SYS_PTHREAD_JOIN = 0x1FD // 509 + SYS_PTHREAD_KEY_CREATE = 0x1FE // 510 + SYS_PTHREAD_MUTEXATTR_INIT = 0x1FF // 511 + SYS_PTHREAD_MUTEXATTR_DESTROY = 0x200 // 512 + SYS_PTHREAD_MUTEXATTR_SETKIND_NP = 0x201 // 513 + SYS_PTHREAD_MUTEXATTR_GETKIND_NP = 0x202 // 514 + SYS_PTHREAD_MUTEX_INIT = 0x203 // 515 + SYS_PTHREAD_MUTEX_DESTROY = 0x204 // 516 + SYS_PTHREAD_MUTEX_LOCK = 0x205 // 517 + SYS_PTHREAD_MUTEX_TRYLOCK = 0x206 // 518 + SYS_PTHREAD_MUTEX_UNLOCK = 0x207 // 519 + SYS_PTHREAD_ONCE = 0x209 // 521 + SYS_PTHREAD_SELF = 0x20A // 522 + SYS_PTHREAD_SETINTR = 0x20B // 523 + SYS_PTHREAD_SETINTRTYPE = 0x20C // 524 + SYS_PTHREAD_SETSPECIFIC = 0x20D // 525 + SYS_PTHREAD_TESTINTR = 0x20E // 526 + SYS_PTHREAD_YIELD = 0x20F // 527 + SYS_TW_OPEN = 0x210 // 528 + SYS_TW_FCNTL = 0x211 // 529 + SYS_PTHREAD_JOIN_D4_NP = 0x212 // 530 + SYS_PTHREAD_CONDATTR_SETKIND_NP = 0x213 // 531 + SYS_PTHREAD_CONDATTR_GETKIND_NP = 0x214 // 532 + SYS_EXTLINK_NP = 0x215 // 533 + SYS___PASSWD = 0x216 // 534 + SYS_SETGROUPS = 0x217 // 535 + SYS_INITGROUPS = 0x218 // 536 + SYS_WCSPBRK = 0x23F // 575 + SYS_WCSRCHR = 0x240 // 576 + SYS_SVC99 = 0x241 // 577 + SYS___SVC99 = 0x241 // 577 + SYS_WCSWCS = 0x242 // 578 + SYS_LOCALECO = 0x243 // 579 + SYS_LOCALECONV = 0x243 // 579 + SYS___LIBREL = 0x244 // 580 + SYS_RELEASE = 0x245 // 581 + SYS___RLSE = 0x245 // 581 + SYS_FLOCATE = 0x246 // 582 + SYS___FLOCT = 0x246 // 582 + SYS_FDELREC = 0x247 // 583 + SYS___FDLREC = 0x247 // 583 + SYS_FETCH = 0x248 // 584 + SYS___FETCH = 0x248 // 584 + SYS_QSORT = 0x249 // 585 + SYS_GETENV = 0x24A // 586 + SYS_SYSTEM = 0x24B // 587 + SYS_BSEARCH = 0x24C // 588 + SYS_LDIV = 0x24D // 589 + SYS___THROW = 0x25E // 606 + SYS___RETHROW = 0x25F // 607 + SYS___CLEANUPCATCH = 0x260 // 608 + SYS___CATCHMATCH = 0x261 // 609 + SYS___CLEAN2UPCATCH = 0x262 // 610 + SYS_PUTENV = 0x26A // 618 + SYS___GETENV = 0x26F // 623 + SYS_GETPRIORITY = 0x270 // 624 + SYS_NICE = 0x271 // 625 + SYS_SETPRIORITY = 0x272 // 626 + SYS_GETITIMER = 0x273 // 627 + SYS_SETITIMER = 0x274 // 628 + SYS_MSGCTL = 0x275 // 629 + SYS_MSGGET = 0x276 // 630 + SYS_MSGRCV = 0x277 // 631 + SYS_MSGSND = 0x278 // 632 + SYS_MSGXRCV = 0x279 // 633 + SYS___MSGXR = 0x279 // 633 + SYS_SEMCTL = 0x27A // 634 + SYS_SEMGET = 0x27B // 635 + SYS_SEMOP = 0x27C // 636 + SYS_SHMAT = 0x27D // 637 + SYS_SHMCTL = 0x27E // 638 + SYS_SHMDT = 0x27F // 639 + SYS_SHMGET = 0x280 // 640 + SYS___GETIPC = 0x281 // 641 + SYS_SETGRENT = 0x282 // 642 + SYS_GETGRENT = 0x283 // 643 + SYS_ENDGRENT = 0x284 // 644 + SYS_SETPWENT = 0x285 // 645 + SYS_GETPWENT = 0x286 // 646 + SYS_ENDPWENT = 0x287 // 647 + SYS_BSD_SIGNAL = 0x288 // 648 + SYS_KILLPG = 0x289 // 649 + SYS_SIGALTSTACK = 0x28A // 650 + SYS_SIGHOLD = 0x28B // 651 + SYS_SIGIGNORE = 0x28C // 652 + SYS_SIGINTERRUPT = 0x28D // 653 + SYS_SIGPAUSE = 0x28E // 654 + SYS_SIGRELSE = 0x28F // 655 + SYS_SIGSET = 0x290 // 656 + SYS_SIGSTACK = 0x291 // 657 + SYS_GETRLIMIT = 0x292 // 658 + SYS_SETRLIMIT = 0x293 // 659 + SYS_GETRUSAGE = 0x294 // 660 + SYS_MMAP = 0x295 // 661 + SYS_MPROTECT = 0x296 // 662 + SYS_MSYNC = 0x297 // 663 + SYS_MUNMAP = 0x298 // 664 + SYS_CONFSTR = 0x299 // 665 + SYS_GETOPT = 0x29A // 666 + SYS_LCHOWN = 0x29B // 667 + SYS_TRUNCATE = 0x29C // 668 + SYS_GETSUBOPT = 0x29D // 669 + SYS_SETPGRP = 0x29E // 670 + SYS___GDERR = 0x29F // 671 + SYS___TZONE = 0x2A0 // 672 + SYS___DLGHT = 0x2A1 // 673 + SYS___OPARGF = 0x2A2 // 674 + SYS___OPOPTF = 0x2A3 // 675 + SYS___OPINDF = 0x2A4 // 676 + SYS___OPERRF = 0x2A5 // 677 + SYS_GETDATE = 0x2A6 // 678 + SYS_WAIT3 = 0x2A7 // 679 + SYS_WAITID = 0x2A8 // 680 + SYS___CATTRM = 0x2A9 // 681 + SYS___GDTRM = 0x2AA // 682 + SYS___RNDTRM = 0x2AB // 683 + SYS_CRYPT = 0x2AC // 684 + SYS_ENCRYPT = 0x2AD // 685 + SYS_SETKEY = 0x2AE // 686 + SYS___CNVBLK = 0x2AF // 687 + SYS___CRYTRM = 0x2B0 // 688 + SYS___ECRTRM = 0x2B1 // 689 + SYS_DRAND48 = 0x2B2 // 690 + SYS_ERAND48 = 0x2B3 // 691 + SYS_FSTATVFS = 0x2B4 // 692 + SYS_STATVFS = 0x2B5 // 693 + SYS_CATCLOSE = 0x2B6 // 694 + SYS_CATGETS = 0x2B7 // 695 + SYS_CATOPEN = 0x2B8 // 696 + SYS_BCMP = 0x2B9 // 697 + SYS_BCOPY = 0x2BA // 698 + SYS_BZERO = 0x2BB // 699 + SYS_FFS = 0x2BC // 700 + SYS_INDEX = 0x2BD // 701 + SYS_RINDEX = 0x2BE // 702 + SYS_STRCASECMP = 0x2BF // 703 + SYS_STRDUP = 0x2C0 // 704 + SYS_STRNCASECMP = 0x2C1 // 705 + SYS_INITSTATE = 0x2C2 // 706 + SYS_SETSTATE = 0x2C3 // 707 + SYS_RANDOM = 0x2C4 // 708 + SYS_SRANDOM = 0x2C5 // 709 + SYS_HCREATE = 0x2C6 // 710 + SYS_HDESTROY = 0x2C7 // 711 + SYS_HSEARCH = 0x2C8 // 712 + SYS_LFIND = 0x2C9 // 713 + SYS_LSEARCH = 0x2CA // 714 + SYS_TDELETE = 0x2CB // 715 + SYS_TFIND = 0x2CC // 716 + SYS_TSEARCH = 0x2CD // 717 + SYS_TWALK = 0x2CE // 718 + SYS_INSQUE = 0x2CF // 719 + SYS_REMQUE = 0x2D0 // 720 + SYS_POPEN = 0x2D1 // 721 + SYS_PCLOSE = 0x2D2 // 722 + SYS_SWAB = 0x2D3 // 723 + SYS_MEMCCPY = 0x2D4 // 724 + SYS_GETPAGESIZE = 0x2D8 // 728 + SYS_FCHDIR = 0x2D9 // 729 + SYS___OCLCK = 0x2DA // 730 + SYS___ATOE = 0x2DB // 731 + SYS___ATOE_L = 0x2DC // 732 + SYS___ETOA = 0x2DD // 733 + SYS___ETOA_L = 0x2DE // 734 + SYS_SETUTXENT = 0x2DF // 735 + SYS_GETUTXENT = 0x2E0 // 736 + SYS_ENDUTXENT = 0x2E1 // 737 + SYS_GETUTXID = 0x2E2 // 738 + SYS_GETUTXLINE = 0x2E3 // 739 + SYS_PUTUTXLINE = 0x2E4 // 740 + SYS_FMTMSG = 0x2E5 // 741 + SYS_JRAND48 = 0x2E6 // 742 + SYS_LRAND48 = 0x2E7 // 743 + SYS_MRAND48 = 0x2E8 // 744 + SYS_NRAND48 = 0x2E9 // 745 + SYS_LCONG48 = 0x2EA // 746 + SYS_SRAND48 = 0x2EB // 747 + SYS_SEED48 = 0x2EC // 748 + SYS_ISASCII = 0x2ED // 749 + SYS_TOASCII = 0x2EE // 750 + SYS_A64L = 0x2EF // 751 + SYS_L64A = 0x2F0 // 752 + SYS_UALARM = 0x2F1 // 753 + SYS_USLEEP = 0x2F2 // 754 + SYS___UTXTRM = 0x2F3 // 755 + SYS___SRCTRM = 0x2F4 // 756 + SYS_FTIME = 0x2F5 // 757 + SYS_GETTIMEOFDAY = 0x2F6 // 758 + SYS_DBM_CLEARERR = 0x2F7 // 759 + SYS_DBM_CLOSE = 0x2F8 // 760 + SYS_DBM_DELETE = 0x2F9 // 761 + SYS_DBM_ERROR = 0x2FA // 762 + SYS_DBM_FETCH = 0x2FB // 763 + SYS_DBM_FIRSTKEY = 0x2FC // 764 + SYS_DBM_NEXTKEY = 0x2FD // 765 + SYS_DBM_OPEN = 0x2FE // 766 + SYS_DBM_STORE = 0x2FF // 767 + SYS___NDMTRM = 0x300 // 768 + SYS_FTOK = 0x301 // 769 + SYS_BASENAME = 0x302 // 770 + SYS_DIRNAME = 0x303 // 771 + SYS_GETDTABLESIZE = 0x304 // 772 + SYS_MKSTEMP = 0x305 // 773 + SYS_MKTEMP = 0x306 // 774 + SYS_NFTW = 0x307 // 775 + SYS_GETWD = 0x308 // 776 + SYS_LOCKF = 0x309 // 777 + SYS__LONGJMP = 0x30D // 781 + SYS__SETJMP = 0x30E // 782 + SYS_VFORK = 0x30F // 783 + SYS_WORDEXP = 0x310 // 784 + SYS_WORDFREE = 0x311 // 785 + SYS_GETPGID = 0x312 // 786 + SYS_GETSID = 0x313 // 787 + SYS___UTMPXNAME = 0x314 // 788 + SYS_CUSERID = 0x315 // 789 + SYS_GETPASS = 0x316 // 790 + SYS_FNMATCH = 0x317 // 791 + SYS_FTW = 0x318 // 792 + SYS_GETW = 0x319 // 793 + SYS_GLOB = 0x31A // 794 + SYS_GLOBFREE = 0x31B // 795 + SYS_PUTW = 0x31C // 796 + SYS_SEEKDIR = 0x31D // 797 + SYS_TELLDIR = 0x31E // 798 + SYS_TEMPNAM = 0x31F // 799 + SYS_ACOSH = 0x320 // 800 + SYS_ASINH = 0x321 // 801 + SYS_ATANH = 0x322 // 802 + SYS_CBRT = 0x323 // 803 + SYS_EXPM1 = 0x324 // 804 + SYS_ILOGB = 0x325 // 805 + SYS_LOGB = 0x326 // 806 + SYS_LOG1P = 0x327 // 807 + SYS_NEXTAFTER = 0x328 // 808 + SYS_RINT = 0x329 // 809 + SYS_REMAINDER = 0x32A // 810 + SYS_SCALB = 0x32B // 811 + SYS_LGAMMA = 0x32C // 812 + SYS_TTYSLOT = 0x32D // 813 + SYS_GETTIMEOFDAY_R = 0x32E // 814 + SYS_SYNC = 0x32F // 815 + SYS_SPAWN = 0x330 // 816 + SYS_SPAWNP = 0x331 // 817 + SYS_GETLOGIN_UU = 0x332 // 818 + SYS_ECVT = 0x333 // 819 + SYS_FCVT = 0x334 // 820 + SYS_GCVT = 0x335 // 821 + SYS_ACCEPT = 0x336 // 822 + SYS_BIND = 0x337 // 823 + SYS_CONNECT = 0x338 // 824 + SYS_ENDHOSTENT = 0x339 // 825 + SYS_ENDPROTOENT = 0x33A // 826 + SYS_ENDSERVENT = 0x33B // 827 + SYS_GETHOSTBYADDR_R = 0x33C // 828 + SYS_GETHOSTBYADDR = 0x33D // 829 + SYS_GETHOSTBYNAME_R = 0x33E // 830 + SYS_GETHOSTBYNAME = 0x33F // 831 + SYS_GETHOSTENT = 0x340 // 832 + SYS_GETHOSTID = 0x341 // 833 + SYS_GETHOSTNAME = 0x342 // 834 + SYS_GETNETBYADDR = 0x343 // 835 + SYS_GETNETBYNAME = 0x344 // 836 + SYS_GETNETENT = 0x345 // 837 + SYS_GETPEERNAME = 0x346 // 838 + SYS_GETPROTOBYNAME = 0x347 // 839 + SYS_GETPROTOBYNUMBER = 0x348 // 840 + SYS_GETPROTOENT = 0x349 // 841 + SYS_GETSERVBYNAME = 0x34A // 842 + SYS_GETSERVBYPORT = 0x34B // 843 + SYS_GETSERVENT = 0x34C // 844 + SYS_GETSOCKNAME = 0x34D // 845 + SYS_GETSOCKOPT = 0x34E // 846 + SYS_INET_ADDR = 0x34F // 847 + SYS_INET_LNAOF = 0x350 // 848 + SYS_INET_MAKEADDR = 0x351 // 849 + SYS_INET_NETOF = 0x352 // 850 + SYS_INET_NETWORK = 0x353 // 851 + SYS_INET_NTOA = 0x354 // 852 + SYS_IOCTL = 0x355 // 853 + SYS_LISTEN = 0x356 // 854 + SYS_READV = 0x357 // 855 + SYS_RECV = 0x358 // 856 + SYS_RECVFROM = 0x359 // 857 + SYS_SELECT = 0x35B // 859 + SYS_SELECTEX = 0x35C // 860 + SYS_SEND = 0x35D // 861 + SYS_SENDTO = 0x35F // 863 + SYS_SETHOSTENT = 0x360 // 864 + SYS_SETNETENT = 0x361 // 865 + SYS_SETPEER = 0x362 // 866 + SYS_SETPROTOENT = 0x363 // 867 + SYS_SETSERVENT = 0x364 // 868 + SYS_SETSOCKOPT = 0x365 // 869 + SYS_SHUTDOWN = 0x366 // 870 + SYS_SOCKET = 0x367 // 871 + SYS_SOCKETPAIR = 0x368 // 872 + SYS_WRITEV = 0x369 // 873 + SYS_CHROOT = 0x36A // 874 + SYS_W_STATVFS = 0x36B // 875 + SYS_ULIMIT = 0x36C // 876 + SYS_ISNAN = 0x36D // 877 + SYS_UTIMES = 0x36E // 878 + SYS___H_ERRNO = 0x36F // 879 + SYS_ENDNETENT = 0x370 // 880 + SYS_CLOSELOG = 0x371 // 881 + SYS_OPENLOG = 0x372 // 882 + SYS_SETLOGMASK = 0x373 // 883 + SYS_SYSLOG = 0x374 // 884 + SYS_PTSNAME = 0x375 // 885 + SYS_SETREUID = 0x376 // 886 + SYS_SETREGID = 0x377 // 887 + SYS_REALPATH = 0x378 // 888 + SYS___SIGNGAM = 0x379 // 889 + SYS_GRANTPT = 0x37A // 890 + SYS_UNLOCKPT = 0x37B // 891 + SYS_TCGETSID = 0x37C // 892 + SYS___TCGETCP = 0x37D // 893 + SYS___TCSETCP = 0x37E // 894 + SYS___TCSETTABLES = 0x37F // 895 + SYS_POLL = 0x380 // 896 + SYS_REXEC = 0x381 // 897 + SYS___ISASCII2 = 0x382 // 898 + SYS___TOASCII2 = 0x383 // 899 + SYS_CHPRIORITY = 0x384 // 900 + SYS_PTHREAD_ATTR_SETSYNCTYPE_NP = 0x385 // 901 + SYS_PTHREAD_ATTR_GETSYNCTYPE_NP = 0x386 // 902 + SYS_PTHREAD_SET_LIMIT_NP = 0x387 // 903 + SYS___STNETENT = 0x388 // 904 + SYS___STPROTOENT = 0x389 // 905 + SYS___STSERVENT = 0x38A // 906 + SYS___STHOSTENT = 0x38B // 907 + SYS_NLIST = 0x38C // 908 + SYS___IPDBCS = 0x38D // 909 + SYS___IPDSPX = 0x38E // 910 + SYS___IPMSGC = 0x38F // 911 + SYS___SELECT1 = 0x390 // 912 + SYS_PTHREAD_SECURITY_NP = 0x391 // 913 + SYS___CHECK_RESOURCE_AUTH_NP = 0x392 // 914 + SYS___CONVERT_ID_NP = 0x393 // 915 + SYS___OPENVMREL = 0x394 // 916 + SYS_WMEMCHR = 0x395 // 917 + SYS_WMEMCMP = 0x396 // 918 + SYS_WMEMCPY = 0x397 // 919 + SYS_WMEMMOVE = 0x398 // 920 + SYS_WMEMSET = 0x399 // 921 + SYS___FPUTWC = 0x400 // 1024 + SYS___PUTWC = 0x401 // 1025 + SYS___PWCHAR = 0x402 // 1026 + SYS___WCSFTM = 0x403 // 1027 + SYS___WCSTOK = 0x404 // 1028 + SYS___WCWDTH = 0x405 // 1029 + SYS_T_ACCEPT = 0x409 // 1033 + SYS_T_ALLOC = 0x40A // 1034 + SYS_T_BIND = 0x40B // 1035 + SYS_T_CLOSE = 0x40C // 1036 + SYS_T_CONNECT = 0x40D // 1037 + SYS_T_ERROR = 0x40E // 1038 + SYS_T_FREE = 0x40F // 1039 + SYS_T_GETINFO = 0x410 // 1040 + SYS_T_GETPROTADDR = 0x411 // 1041 + SYS_T_GETSTATE = 0x412 // 1042 + SYS_T_LISTEN = 0x413 // 1043 + SYS_T_LOOK = 0x414 // 1044 + SYS_T_OPEN = 0x415 // 1045 + SYS_T_OPTMGMT = 0x416 // 1046 + SYS_T_RCV = 0x417 // 1047 + SYS_T_RCVCONNECT = 0x418 // 1048 + SYS_T_RCVDIS = 0x419 // 1049 + SYS_T_RCVREL = 0x41A // 1050 + SYS_T_RCVUDATA = 0x41B // 1051 + SYS_T_RCVUDERR = 0x41C // 1052 + SYS_T_SND = 0x41D // 1053 + SYS_T_SNDDIS = 0x41E // 1054 + SYS_T_SNDREL = 0x41F // 1055 + SYS_T_SNDUDATA = 0x420 // 1056 + SYS_T_STRERROR = 0x421 // 1057 + SYS_T_SYNC = 0x422 // 1058 + SYS_T_UNBIND = 0x423 // 1059 + SYS___T_ERRNO = 0x424 // 1060 + SYS___RECVMSG2 = 0x425 // 1061 + SYS___SENDMSG2 = 0x426 // 1062 + SYS_FATTACH = 0x427 // 1063 + SYS_FDETACH = 0x428 // 1064 + SYS_GETMSG = 0x429 // 1065 + SYS_GETPMSG = 0x42A // 1066 + SYS_ISASTREAM = 0x42B // 1067 + SYS_PUTMSG = 0x42C // 1068 + SYS_PUTPMSG = 0x42D // 1069 + SYS___ISPOSIXON = 0x42E // 1070 + SYS___OPENMVSREL = 0x42F // 1071 + SYS_GETCONTEXT = 0x430 // 1072 + SYS_SETCONTEXT = 0x431 // 1073 + SYS_MAKECONTEXT = 0x432 // 1074 + SYS_SWAPCONTEXT = 0x433 // 1075 + SYS_PTHREAD_GETSPECIFIC_D8_NP = 0x434 // 1076 + SYS_GETCLIENTID = 0x470 // 1136 + SYS___GETCLIENTID = 0x471 // 1137 + SYS_GETSTABLESIZE = 0x472 // 1138 + SYS_GETIBMOPT = 0x473 // 1139 + SYS_GETIBMSOCKOPT = 0x474 // 1140 + SYS_GIVESOCKET = 0x475 // 1141 + SYS_IBMSFLUSH = 0x476 // 1142 + SYS_MAXDESC = 0x477 // 1143 + SYS_SETIBMOPT = 0x478 // 1144 + SYS_SETIBMSOCKOPT = 0x479 // 1145 + SYS_SOCK_DEBUG = 0x47A // 1146 + SYS_SOCK_DO_TESTSTOR = 0x47D // 1149 + SYS_TAKESOCKET = 0x47E // 1150 + SYS___SERVER_INIT = 0x47F // 1151 + SYS___SERVER_PWU = 0x480 // 1152 + SYS_PTHREAD_TAG_NP = 0x481 // 1153 + SYS___CONSOLE = 0x482 // 1154 + SYS___WSINIT = 0x483 // 1155 + SYS___IPTCPN = 0x489 // 1161 + SYS___SMF_RECORD = 0x48A // 1162 + SYS___IPHOST = 0x48B // 1163 + SYS___IPNODE = 0x48C // 1164 + SYS___SERVER_CLASSIFY_CREATE = 0x48D // 1165 + SYS___SERVER_CLASSIFY_DESTROY = 0x48E // 1166 + SYS___SERVER_CLASSIFY_RESET = 0x48F // 1167 + SYS___SERVER_CLASSIFY = 0x490 // 1168 + SYS___HEAPRPT = 0x496 // 1174 + SYS___FNWSA = 0x49B // 1179 + SYS___SPAWN2 = 0x49D // 1181 + SYS___SPAWNP2 = 0x49E // 1182 + SYS___GDRR = 0x4A1 // 1185 + SYS___HRRNO = 0x4A2 // 1186 + SYS___OPRG = 0x4A3 // 1187 + SYS___OPRR = 0x4A4 // 1188 + SYS___OPND = 0x4A5 // 1189 + SYS___OPPT = 0x4A6 // 1190 + SYS___SIGGM = 0x4A7 // 1191 + SYS___DGHT = 0x4A8 // 1192 + SYS___TZNE = 0x4A9 // 1193 + SYS___TZZN = 0x4AA // 1194 + SYS___TRRNO = 0x4AF // 1199 + SYS___ENVN = 0x4B0 // 1200 + SYS___MLOCKALL = 0x4B1 // 1201 + SYS_CREATEWO = 0x4B2 // 1202 + SYS_CREATEWORKUNIT = 0x4B2 // 1202 + SYS_CONTINUE = 0x4B3 // 1203 + SYS_CONTINUEWORKUNIT = 0x4B3 // 1203 + SYS_CONNECTW = 0x4B4 // 1204 + SYS_CONNECTWORKMGR = 0x4B4 // 1204 + SYS_CONNECTS = 0x4B5 // 1205 + SYS_CONNECTSERVER = 0x4B5 // 1205 + SYS_DISCONNE = 0x4B6 // 1206 + SYS_DISCONNECTSERVER = 0x4B6 // 1206 + SYS_JOINWORK = 0x4B7 // 1207 + SYS_JOINWORKUNIT = 0x4B7 // 1207 + SYS_LEAVEWOR = 0x4B8 // 1208 + SYS_LEAVEWORKUNIT = 0x4B8 // 1208 + SYS_DELETEWO = 0x4B9 // 1209 + SYS_DELETEWORKUNIT = 0x4B9 // 1209 + SYS_QUERYMET = 0x4BA // 1210 + SYS_QUERYMETRICS = 0x4BA // 1210 + SYS_QUERYSCH = 0x4BB // 1211 + SYS_QUERYSCHENV = 0x4BB // 1211 + SYS_CHECKSCH = 0x4BC // 1212 + SYS_CHECKSCHENV = 0x4BC // 1212 + SYS___PID_AFFINITY = 0x4BD // 1213 + SYS___ASINH_B = 0x4BE // 1214 + SYS___ATAN_B = 0x4BF // 1215 + SYS___CBRT_B = 0x4C0 // 1216 + SYS___CEIL_B = 0x4C1 // 1217 + SYS_COPYSIGN = 0x4C2 // 1218 + SYS___COS_B = 0x4C3 // 1219 + SYS___ERF_B = 0x4C4 // 1220 + SYS___ERFC_B = 0x4C5 // 1221 + SYS___EXPM1_B = 0x4C6 // 1222 + SYS___FABS_B = 0x4C7 // 1223 + SYS_FINITE = 0x4C8 // 1224 + SYS___FLOOR_B = 0x4C9 // 1225 + SYS___FREXP_B = 0x4CA // 1226 + SYS___ILOGB_B = 0x4CB // 1227 + SYS___ISNAN_B = 0x4CC // 1228 + SYS___LDEXP_B = 0x4CD // 1229 + SYS___LOG1P_B = 0x4CE // 1230 + SYS___LOGB_B = 0x4CF // 1231 + SYS_MATHERR = 0x4D0 // 1232 + SYS___MODF_B = 0x4D1 // 1233 + SYS___NEXTAFTER_B = 0x4D2 // 1234 + SYS___RINT_B = 0x4D3 // 1235 + SYS_SCALBN = 0x4D4 // 1236 + SYS_SIGNIFIC = 0x4D5 // 1237 + SYS_SIGNIFICAND = 0x4D5 // 1237 + SYS___SIN_B = 0x4D6 // 1238 + SYS___TAN_B = 0x4D7 // 1239 + SYS___TANH_B = 0x4D8 // 1240 + SYS___ACOS_B = 0x4D9 // 1241 + SYS___ACOSH_B = 0x4DA // 1242 + SYS___ASIN_B = 0x4DB // 1243 + SYS___ATAN2_B = 0x4DC // 1244 + SYS___ATANH_B = 0x4DD // 1245 + SYS___COSH_B = 0x4DE // 1246 + SYS___EXP_B = 0x4DF // 1247 + SYS___FMOD_B = 0x4E0 // 1248 + SYS___GAMMA_B = 0x4E1 // 1249 + SYS_GAMMA_R = 0x4E2 // 1250 + SYS___HYPOT_B = 0x4E3 // 1251 + SYS___J0_B = 0x4E4 // 1252 + SYS___Y0_B = 0x4E5 // 1253 + SYS___J1_B = 0x4E6 // 1254 + SYS___Y1_B = 0x4E7 // 1255 + SYS___JN_B = 0x4E8 // 1256 + SYS___YN_B = 0x4E9 // 1257 + SYS___LGAMMA_B = 0x4EA // 1258 + SYS_LGAMMA_R = 0x4EB // 1259 + SYS___LOG_B = 0x4EC // 1260 + SYS___LOG10_B = 0x4ED // 1261 + SYS___POW_B = 0x4EE // 1262 + SYS___REMAINDER_B = 0x4EF // 1263 + SYS___SCALB_B = 0x4F0 // 1264 + SYS___SINH_B = 0x4F1 // 1265 + SYS___SQRT_B = 0x4F2 // 1266 + SYS___OPENDIR2 = 0x4F3 // 1267 + SYS___READDIR2 = 0x4F4 // 1268 + SYS___LOGIN = 0x4F5 // 1269 + SYS___OPEN_STAT = 0x4F6 // 1270 + SYS_ACCEPT_AND_RECV = 0x4F7 // 1271 + SYS___FP_SETMODE = 0x4F8 // 1272 + SYS___SIGACTIONSET = 0x4FB // 1275 + SYS___UCREATE = 0x4FC // 1276 + SYS___UMALLOC = 0x4FD // 1277 + SYS___UFREE = 0x4FE // 1278 + SYS___UHEAPREPORT = 0x4FF // 1279 + SYS___ISBFP = 0x500 // 1280 + SYS___FP_CAST = 0x501 // 1281 + SYS___CERTIFICATE = 0x502 // 1282 + SYS_SEND_FILE = 0x503 // 1283 + SYS_AIO_CANCEL = 0x504 // 1284 + SYS_AIO_ERROR = 0x505 // 1285 + SYS_AIO_READ = 0x506 // 1286 + SYS_AIO_RETURN = 0x507 // 1287 + SYS_AIO_SUSPEND = 0x508 // 1288 + SYS_AIO_WRITE = 0x509 // 1289 + SYS_PTHREAD_MUTEXATTR_GETPSHARED = 0x50A // 1290 + SYS_PTHREAD_MUTEXATTR_SETPSHARED = 0x50B // 1291 + SYS_PTHREAD_RWLOCK_DESTROY = 0x50C // 1292 + SYS_PTHREAD_RWLOCK_INIT = 0x50D // 1293 + SYS_PTHREAD_RWLOCK_RDLOCK = 0x50E // 1294 + SYS_PTHREAD_RWLOCK_TRYRDLOCK = 0x50F // 1295 + SYS_PTHREAD_RWLOCK_TRYWRLOCK = 0x510 // 1296 + SYS_PTHREAD_RWLOCK_UNLOCK = 0x511 // 1297 + SYS_PTHREAD_RWLOCK_WRLOCK = 0x512 // 1298 + SYS_PTHREAD_RWLOCKATTR_GETPSHARED = 0x513 // 1299 + SYS_PTHREAD_RWLOCKATTR_SETPSHARED = 0x514 // 1300 + SYS_PTHREAD_RWLOCKATTR_INIT = 0x515 // 1301 + SYS_PTHREAD_RWLOCKATTR_DESTROY = 0x516 // 1302 + SYS___CTTBL = 0x517 // 1303 + SYS_PTHREAD_MUTEXATTR_SETTYPE = 0x518 // 1304 + SYS_PTHREAD_MUTEXATTR_GETTYPE = 0x519 // 1305 + SYS___FP_CLR_FLAG = 0x51A // 1306 + SYS___FP_READ_FLAG = 0x51B // 1307 + SYS___FP_RAISE_XCP = 0x51C // 1308 + SYS___FP_CLASS = 0x51D // 1309 + SYS___FP_FINITE = 0x51E // 1310 + SYS___FP_ISNAN = 0x51F // 1311 + SYS___FP_UNORDERED = 0x520 // 1312 + SYS___FP_READ_RND = 0x521 // 1313 + SYS___FP_READ_RND_B = 0x522 // 1314 + SYS___FP_SWAP_RND = 0x523 // 1315 + SYS___FP_SWAP_RND_B = 0x524 // 1316 + SYS___FP_LEVEL = 0x525 // 1317 + SYS___FP_BTOH = 0x526 // 1318 + SYS___FP_HTOB = 0x527 // 1319 + SYS___FPC_RD = 0x528 // 1320 + SYS___FPC_WR = 0x529 // 1321 + SYS___FPC_RW = 0x52A // 1322 + SYS___FPC_SM = 0x52B // 1323 + SYS___FPC_RS = 0x52C // 1324 + SYS_SIGTIMEDWAIT = 0x52D // 1325 + SYS_SIGWAITINFO = 0x52E // 1326 + SYS___CHKBFP = 0x52F // 1327 + SYS___W_PIOCTL = 0x59E // 1438 + SYS___OSENV = 0x59F // 1439 + SYS_EXPORTWO = 0x5A1 // 1441 + SYS_EXPORTWORKUNIT = 0x5A1 // 1441 + SYS_UNDOEXPO = 0x5A2 // 1442 + SYS_UNDOEXPORTWORKUNIT = 0x5A2 // 1442 + SYS_IMPORTWO = 0x5A3 // 1443 + SYS_IMPORTWORKUNIT = 0x5A3 // 1443 + SYS_UNDOIMPO = 0x5A4 // 1444 + SYS_UNDOIMPORTWORKUNIT = 0x5A4 // 1444 + SYS_EXTRACTW = 0x5A5 // 1445 + SYS_EXTRACTWORKUNIT = 0x5A5 // 1445 + SYS___CPL = 0x5A6 // 1446 + SYS___MAP_INIT = 0x5A7 // 1447 + SYS___MAP_SERVICE = 0x5A8 // 1448 + SYS_SIGQUEUE = 0x5A9 // 1449 + SYS___MOUNT = 0x5AA // 1450 + SYS___GETUSERID = 0x5AB // 1451 + SYS___IPDOMAINNAME = 0x5AC // 1452 + SYS_QUERYENC = 0x5AD // 1453 + SYS_QUERYWORKUNITCLASSIFICATION = 0x5AD // 1453 + SYS_CONNECTE = 0x5AE // 1454 + SYS_CONNECTEXPORTIMPORT = 0x5AE // 1454 + SYS___FP_SWAPMODE = 0x5AF // 1455 + SYS_STRTOLL = 0x5B0 // 1456 + SYS_STRTOULL = 0x5B1 // 1457 + SYS___DSA_PREV = 0x5B2 // 1458 + SYS___EP_FIND = 0x5B3 // 1459 + SYS___SERVER_THREADS_QUERY = 0x5B4 // 1460 + SYS___MSGRCV_TIMED = 0x5B7 // 1463 + SYS___SEMOP_TIMED = 0x5B8 // 1464 + SYS___GET_CPUID = 0x5B9 // 1465 + SYS___GET_SYSTEM_SETTINGS = 0x5BA // 1466 + SYS_FTELLO = 0x5C8 // 1480 + SYS_FSEEKO = 0x5C9 // 1481 + SYS_LLDIV = 0x5CB // 1483 + SYS_WCSTOLL = 0x5CC // 1484 + SYS_WCSTOULL = 0x5CD // 1485 + SYS_LLABS = 0x5CE // 1486 + SYS___CONSOLE2 = 0x5D2 // 1490 + SYS_INET_NTOP = 0x5D3 // 1491 + SYS_INET_PTON = 0x5D4 // 1492 + SYS___RES = 0x5D6 // 1494 + SYS_RES_MKQUERY = 0x5D7 // 1495 + SYS_RES_INIT = 0x5D8 // 1496 + SYS_RES_QUERY = 0x5D9 // 1497 + SYS_RES_SEARCH = 0x5DA // 1498 + SYS_RES_SEND = 0x5DB // 1499 + SYS_RES_QUERYDOMAIN = 0x5DC // 1500 + SYS_DN_EXPAND = 0x5DD // 1501 + SYS_DN_SKIPNAME = 0x5DE // 1502 + SYS_DN_COMP = 0x5DF // 1503 + SYS_ASCTIME_R = 0x5E0 // 1504 + SYS_CTIME_R = 0x5E1 // 1505 + SYS_GMTIME_R = 0x5E2 // 1506 + SYS_LOCALTIME_R = 0x5E3 // 1507 + SYS_RAND_R = 0x5E4 // 1508 + SYS_STRTOK_R = 0x5E5 // 1509 + SYS_READDIR_R = 0x5E6 // 1510 + SYS_GETGRGID_R = 0x5E7 // 1511 + SYS_GETGRNAM_R = 0x5E8 // 1512 + SYS_GETLOGIN_R = 0x5E9 // 1513 + SYS_GETPWNAM_R = 0x5EA // 1514 + SYS_GETPWUID_R = 0x5EB // 1515 + SYS_TTYNAME_R = 0x5EC // 1516 + SYS_PTHREAD_ATFORK = 0x5ED // 1517 + SYS_PTHREAD_ATTR_GETGUARDSIZE = 0x5EE // 1518 + SYS_PTHREAD_ATTR_GETSTACKADDR = 0x5EF // 1519 + SYS_PTHREAD_ATTR_SETGUARDSIZE = 0x5F0 // 1520 + SYS_PTHREAD_ATTR_SETSTACKADDR = 0x5F1 // 1521 + SYS_PTHREAD_CONDATTR_GETPSHARED = 0x5F2 // 1522 + SYS_PTHREAD_CONDATTR_SETPSHARED = 0x5F3 // 1523 + SYS_PTHREAD_GETCONCURRENCY = 0x5F4 // 1524 + SYS_PTHREAD_KEY_DELETE = 0x5F5 // 1525 + SYS_PTHREAD_SETCONCURRENCY = 0x5F6 // 1526 + SYS_PTHREAD_SIGMASK = 0x5F7 // 1527 + SYS___DISCARDDATA = 0x5F8 // 1528 + SYS_PTHREAD_ATTR_GETSCHEDPARAM = 0x5F9 // 1529 + SYS_PTHREAD_ATTR_SETSCHEDPARAM = 0x5FA // 1530 + SYS_PTHREAD_ATTR_GETDETACHSTATE_U98 = 0x5FB // 1531 + SYS_PTHREAD_ATTR_SETDETACHSTATE_U98 = 0x5FC // 1532 + SYS_PTHREAD_DETACH_U98 = 0x5FD // 1533 + SYS_PTHREAD_GETSPECIFIC_U98 = 0x5FE // 1534 + SYS_PTHREAD_SETCANCELSTATE = 0x5FF // 1535 + SYS_PTHREAD_SETCANCELTYPE = 0x600 // 1536 + SYS_PTHREAD_TESTCANCEL = 0x601 // 1537 + SYS___ATANF_B = 0x602 // 1538 + SYS___ATANL_B = 0x603 // 1539 + SYS___CEILF_B = 0x604 // 1540 + SYS___CEILL_B = 0x605 // 1541 + SYS___COSF_B = 0x606 // 1542 + SYS___COSL_B = 0x607 // 1543 + SYS___FABSF_B = 0x608 // 1544 + SYS___FABSL_B = 0x609 // 1545 + SYS___FLOORF_B = 0x60A // 1546 + SYS___FLOORL_B = 0x60B // 1547 + SYS___FREXPF_B = 0x60C // 1548 + SYS___FREXPL_B = 0x60D // 1549 + SYS___LDEXPF_B = 0x60E // 1550 + SYS___LDEXPL_B = 0x60F // 1551 + SYS___SINF_B = 0x610 // 1552 + SYS___SINL_B = 0x611 // 1553 + SYS___TANF_B = 0x612 // 1554 + SYS___TANL_B = 0x613 // 1555 + SYS___TANHF_B = 0x614 // 1556 + SYS___TANHL_B = 0x615 // 1557 + SYS___ACOSF_B = 0x616 // 1558 + SYS___ACOSL_B = 0x617 // 1559 + SYS___ASINF_B = 0x618 // 1560 + SYS___ASINL_B = 0x619 // 1561 + SYS___ATAN2F_B = 0x61A // 1562 + SYS___ATAN2L_B = 0x61B // 1563 + SYS___COSHF_B = 0x61C // 1564 + SYS___COSHL_B = 0x61D // 1565 + SYS___EXPF_B = 0x61E // 1566 + SYS___EXPL_B = 0x61F // 1567 + SYS___LOGF_B = 0x620 // 1568 + SYS___LOGL_B = 0x621 // 1569 + SYS___LOG10F_B = 0x622 // 1570 + SYS___LOG10L_B = 0x623 // 1571 + SYS___POWF_B = 0x624 // 1572 + SYS___POWL_B = 0x625 // 1573 + SYS___SINHF_B = 0x626 // 1574 + SYS___SINHL_B = 0x627 // 1575 + SYS___SQRTF_B = 0x628 // 1576 + SYS___SQRTL_B = 0x629 // 1577 + SYS___ABSF_B = 0x62A // 1578 + SYS___ABS_B = 0x62B // 1579 + SYS___ABSL_B = 0x62C // 1580 + SYS___FMODF_B = 0x62D // 1581 + SYS___FMODL_B = 0x62E // 1582 + SYS___MODFF_B = 0x62F // 1583 + SYS___MODFL_B = 0x630 // 1584 + SYS_ABSF = 0x631 // 1585 + SYS_ABSL = 0x632 // 1586 + SYS_ACOSF = 0x633 // 1587 + SYS_ACOSL = 0x634 // 1588 + SYS_ASINF = 0x635 // 1589 + SYS_ASINL = 0x636 // 1590 + SYS_ATAN2F = 0x637 // 1591 + SYS_ATAN2L = 0x638 // 1592 + SYS_ATANF = 0x639 // 1593 + SYS_ATANL = 0x63A // 1594 + SYS_CEILF = 0x63B // 1595 + SYS_CEILL = 0x63C // 1596 + SYS_COSF = 0x63D // 1597 + SYS_COSL = 0x63E // 1598 + SYS_COSHF = 0x63F // 1599 + SYS_COSHL = 0x640 // 1600 + SYS_EXPF = 0x641 // 1601 + SYS_EXPL = 0x642 // 1602 + SYS_TANHF = 0x643 // 1603 + SYS_TANHL = 0x644 // 1604 + SYS_LOG10F = 0x645 // 1605 + SYS_LOG10L = 0x646 // 1606 + SYS_LOGF = 0x647 // 1607 + SYS_LOGL = 0x648 // 1608 + SYS_POWF = 0x649 // 1609 + SYS_POWL = 0x64A // 1610 + SYS_SINF = 0x64B // 1611 + SYS_SINL = 0x64C // 1612 + SYS_SQRTF = 0x64D // 1613 + SYS_SQRTL = 0x64E // 1614 + SYS_SINHF = 0x64F // 1615 + SYS_SINHL = 0x650 // 1616 + SYS_TANF = 0x651 // 1617 + SYS_TANL = 0x652 // 1618 + SYS_FABSF = 0x653 // 1619 + SYS_FABSL = 0x654 // 1620 + SYS_FLOORF = 0x655 // 1621 + SYS_FLOORL = 0x656 // 1622 + SYS_FMODF = 0x657 // 1623 + SYS_FMODL = 0x658 // 1624 + SYS_FREXPF = 0x659 // 1625 + SYS_FREXPL = 0x65A // 1626 + SYS_LDEXPF = 0x65B // 1627 + SYS_LDEXPL = 0x65C // 1628 + SYS_MODFF = 0x65D // 1629 + SYS_MODFL = 0x65E // 1630 + SYS_BTOWC = 0x65F // 1631 + SYS___CHATTR = 0x660 // 1632 + SYS___FCHATTR = 0x661 // 1633 + SYS___TOCCSID = 0x662 // 1634 + SYS___CSNAMETYPE = 0x663 // 1635 + SYS___TOCSNAME = 0x664 // 1636 + SYS___CCSIDTYPE = 0x665 // 1637 + SYS___AE_CORRESTBL_QUERY = 0x666 // 1638 + SYS___AE_AUTOCONVERT_STATE = 0x667 // 1639 + SYS_DN_FIND = 0x668 // 1640 + SYS___GETHOSTBYADDR_A = 0x669 // 1641 + SYS___GETHOSTBYNAME_A = 0x66A // 1642 + SYS___RES_INIT_A = 0x66B // 1643 + SYS___GETHOSTBYADDR_R_A = 0x66C // 1644 + SYS___GETHOSTBYNAME_R_A = 0x66D // 1645 + SYS___CHARMAP_INIT_A = 0x66E // 1646 + SYS___MBLEN_A = 0x66F // 1647 + SYS___MBLEN_SB_A = 0x670 // 1648 + SYS___MBLEN_STD_A = 0x671 // 1649 + SYS___MBLEN_UTF = 0x672 // 1650 + SYS___MBSTOWCS_A = 0x673 // 1651 + SYS___MBSTOWCS_STD_A = 0x674 // 1652 + SYS___MBTOWC_A = 0x675 // 1653 + SYS___MBTOWC_ISO1 = 0x676 // 1654 + SYS___MBTOWC_SBCS = 0x677 // 1655 + SYS___MBTOWC_MBCS = 0x678 // 1656 + SYS___MBTOWC_UTF = 0x679 // 1657 + SYS___WCSTOMBS_A = 0x67A // 1658 + SYS___WCSTOMBS_STD_A = 0x67B // 1659 + SYS___WCSWIDTH_A = 0x67C // 1660 + SYS___GETGRGID_R_A = 0x67D // 1661 + SYS___WCSWIDTH_STD_A = 0x67E // 1662 + SYS___WCSWIDTH_ASIA = 0x67F // 1663 + SYS___CSID_A = 0x680 // 1664 + SYS___CSID_STD_A = 0x681 // 1665 + SYS___WCSID_A = 0x682 // 1666 + SYS___WCSID_STD_A = 0x683 // 1667 + SYS___WCTOMB_A = 0x684 // 1668 + SYS___WCTOMB_ISO1 = 0x685 // 1669 + SYS___WCTOMB_STD_A = 0x686 // 1670 + SYS___WCTOMB_UTF = 0x687 // 1671 + SYS___WCWIDTH_A = 0x688 // 1672 + SYS___GETGRNAM_R_A = 0x689 // 1673 + SYS___WCWIDTH_STD_A = 0x68A // 1674 + SYS___WCWIDTH_ASIA = 0x68B // 1675 + SYS___GETPWNAM_R_A = 0x68C // 1676 + SYS___GETPWUID_R_A = 0x68D // 1677 + SYS___GETLOGIN_R_A = 0x68E // 1678 + SYS___TTYNAME_R_A = 0x68F // 1679 + SYS___READDIR_R_A = 0x690 // 1680 + SYS___E2A_S = 0x691 // 1681 + SYS___FNMATCH_A = 0x692 // 1682 + SYS___FNMATCH_C_A = 0x693 // 1683 + SYS___EXECL_A = 0x694 // 1684 + SYS___FNMATCH_STD_A = 0x695 // 1685 + SYS___REGCOMP_A = 0x696 // 1686 + SYS___REGCOMP_STD_A = 0x697 // 1687 + SYS___REGERROR_A = 0x698 // 1688 + SYS___REGERROR_STD_A = 0x699 // 1689 + SYS___REGEXEC_A = 0x69A // 1690 + SYS___REGEXEC_STD_A = 0x69B // 1691 + SYS___REGFREE_A = 0x69C // 1692 + SYS___REGFREE_STD_A = 0x69D // 1693 + SYS___STRCOLL_A = 0x69E // 1694 + SYS___STRCOLL_C_A = 0x69F // 1695 + SYS___EXECLE_A = 0x6A0 // 1696 + SYS___STRCOLL_STD_A = 0x6A1 // 1697 + SYS___STRXFRM_A = 0x6A2 // 1698 + SYS___STRXFRM_C_A = 0x6A3 // 1699 + SYS___EXECLP_A = 0x6A4 // 1700 + SYS___STRXFRM_STD_A = 0x6A5 // 1701 + SYS___WCSCOLL_A = 0x6A6 // 1702 + SYS___WCSCOLL_C_A = 0x6A7 // 1703 + SYS___WCSCOLL_STD_A = 0x6A8 // 1704 + SYS___WCSXFRM_A = 0x6A9 // 1705 + SYS___WCSXFRM_C_A = 0x6AA // 1706 + SYS___WCSXFRM_STD_A = 0x6AB // 1707 + SYS___COLLATE_INIT_A = 0x6AC // 1708 + SYS___WCTYPE_A = 0x6AD // 1709 + SYS___GET_WCTYPE_STD_A = 0x6AE // 1710 + SYS___CTYPE_INIT_A = 0x6AF // 1711 + SYS___ISWCTYPE_A = 0x6B0 // 1712 + SYS___EXECV_A = 0x6B1 // 1713 + SYS___IS_WCTYPE_STD_A = 0x6B2 // 1714 + SYS___TOWLOWER_A = 0x6B3 // 1715 + SYS___TOWLOWER_STD_A = 0x6B4 // 1716 + SYS___TOWUPPER_A = 0x6B5 // 1717 + SYS___TOWUPPER_STD_A = 0x6B6 // 1718 + SYS___LOCALE_INIT_A = 0x6B7 // 1719 + SYS___LOCALECONV_A = 0x6B8 // 1720 + SYS___LOCALECONV_STD_A = 0x6B9 // 1721 + SYS___NL_LANGINFO_A = 0x6BA // 1722 + SYS___NL_LNAGINFO_STD_A = 0x6BB // 1723 + SYS___MONETARY_INIT_A = 0x6BC // 1724 + SYS___STRFMON_A = 0x6BD // 1725 + SYS___STRFMON_STD_A = 0x6BE // 1726 + SYS___GETADDRINFO_A = 0x6BF // 1727 + SYS___CATGETS_A = 0x6C0 // 1728 + SYS___EXECVE_A = 0x6C1 // 1729 + SYS___EXECVP_A = 0x6C2 // 1730 + SYS___SPAWN_A = 0x6C3 // 1731 + SYS___GETNAMEINFO_A = 0x6C4 // 1732 + SYS___SPAWNP_A = 0x6C5 // 1733 + SYS___NUMERIC_INIT_A = 0x6C6 // 1734 + SYS___RESP_INIT_A = 0x6C7 // 1735 + SYS___RPMATCH_A = 0x6C8 // 1736 + SYS___RPMATCH_C_A = 0x6C9 // 1737 + SYS___RPMATCH_STD_A = 0x6CA // 1738 + SYS___TIME_INIT_A = 0x6CB // 1739 + SYS___STRFTIME_A = 0x6CC // 1740 + SYS___STRFTIME_STD_A = 0x6CD // 1741 + SYS___STRPTIME_A = 0x6CE // 1742 + SYS___STRPTIME_STD_A = 0x6CF // 1743 + SYS___WCSFTIME_A = 0x6D0 // 1744 + SYS___WCSFTIME_STD_A = 0x6D1 // 1745 + SYS_____SPAWN2_A = 0x6D2 // 1746 + SYS_____SPAWNP2_A = 0x6D3 // 1747 + SYS___SYNTAX_INIT_A = 0x6D4 // 1748 + SYS___TOD_INIT_A = 0x6D5 // 1749 + SYS___NL_CSINFO_A = 0x6D6 // 1750 + SYS___NL_MONINFO_A = 0x6D7 // 1751 + SYS___NL_NUMINFO_A = 0x6D8 // 1752 + SYS___NL_RESPINFO_A = 0x6D9 // 1753 + SYS___NL_TIMINFO_A = 0x6DA // 1754 + SYS___IF_NAMETOINDEX_A = 0x6DB // 1755 + SYS___IF_INDEXTONAME_A = 0x6DC // 1756 + SYS___PRINTF_A = 0x6DD // 1757 + SYS___ICONV_OPEN_A = 0x6DE // 1758 + SYS___DLLLOAD_A = 0x6DF // 1759 + SYS___DLLQUERYFN_A = 0x6E0 // 1760 + SYS___DLLQUERYVAR_A = 0x6E1 // 1761 + SYS_____CHATTR_A = 0x6E2 // 1762 + SYS___E2A_L = 0x6E3 // 1763 + SYS_____TOCCSID_A = 0x6E4 // 1764 + SYS_____TOCSNAME_A = 0x6E5 // 1765 + SYS_____CCSIDTYPE_A = 0x6E6 // 1766 + SYS_____CSNAMETYPE_A = 0x6E7 // 1767 + SYS___CHMOD_A = 0x6E8 // 1768 + SYS___MKDIR_A = 0x6E9 // 1769 + SYS___STAT_A = 0x6EA // 1770 + SYS___STAT_O_A = 0x6EB // 1771 + SYS___MKFIFO_A = 0x6EC // 1772 + SYS_____OPEN_STAT_A = 0x6ED // 1773 + SYS___LSTAT_A = 0x6EE // 1774 + SYS___LSTAT_O_A = 0x6EF // 1775 + SYS___MKNOD_A = 0x6F0 // 1776 + SYS___MOUNT_A = 0x6F1 // 1777 + SYS___UMOUNT_A = 0x6F2 // 1778 + SYS___CHAUDIT_A = 0x6F4 // 1780 + SYS___W_GETMNTENT_A = 0x6F5 // 1781 + SYS___CREAT_A = 0x6F6 // 1782 + SYS___OPEN_A = 0x6F7 // 1783 + SYS___SETLOCALE_A = 0x6F9 // 1785 + SYS___FPRINTF_A = 0x6FA // 1786 + SYS___SPRINTF_A = 0x6FB // 1787 + SYS___VFPRINTF_A = 0x6FC // 1788 + SYS___VPRINTF_A = 0x6FD // 1789 + SYS___VSPRINTF_A = 0x6FE // 1790 + SYS___VSWPRINTF_A = 0x6FF // 1791 + SYS___SWPRINTF_A = 0x700 // 1792 + SYS___FSCANF_A = 0x701 // 1793 + SYS___SCANF_A = 0x702 // 1794 + SYS___SSCANF_A = 0x703 // 1795 + SYS___SWSCANF_A = 0x704 // 1796 + SYS___ATOF_A = 0x705 // 1797 + SYS___ATOI_A = 0x706 // 1798 + SYS___ATOL_A = 0x707 // 1799 + SYS___STRTOD_A = 0x708 // 1800 + SYS___STRTOL_A = 0x709 // 1801 + SYS___STRTOUL_A = 0x70A // 1802 + SYS_____AE_CORRESTBL_QUERY_A = 0x70B // 1803 + SYS___A64L_A = 0x70C // 1804 + SYS___ECVT_A = 0x70D // 1805 + SYS___FCVT_A = 0x70E // 1806 + SYS___GCVT_A = 0x70F // 1807 + SYS___L64A_A = 0x710 // 1808 + SYS___STRERROR_A = 0x711 // 1809 + SYS___PERROR_A = 0x712 // 1810 + SYS___FETCH_A = 0x713 // 1811 + SYS___GETENV_A = 0x714 // 1812 + SYS___MKSTEMP_A = 0x717 // 1815 + SYS___PTSNAME_A = 0x718 // 1816 + SYS___PUTENV_A = 0x719 // 1817 + SYS___REALPATH_A = 0x71A // 1818 + SYS___SETENV_A = 0x71B // 1819 + SYS___SYSTEM_A = 0x71C // 1820 + SYS___GETOPT_A = 0x71D // 1821 + SYS___CATOPEN_A = 0x71E // 1822 + SYS___ACCESS_A = 0x71F // 1823 + SYS___CHDIR_A = 0x720 // 1824 + SYS___CHOWN_A = 0x721 // 1825 + SYS___CHROOT_A = 0x722 // 1826 + SYS___GETCWD_A = 0x723 // 1827 + SYS___GETWD_A = 0x724 // 1828 + SYS___LCHOWN_A = 0x725 // 1829 + SYS___LINK_A = 0x726 // 1830 + SYS___PATHCONF_A = 0x727 // 1831 + SYS___IF_NAMEINDEX_A = 0x728 // 1832 + SYS___READLINK_A = 0x729 // 1833 + SYS___RMDIR_A = 0x72A // 1834 + SYS___STATVFS_A = 0x72B // 1835 + SYS___SYMLINK_A = 0x72C // 1836 + SYS___TRUNCATE_A = 0x72D // 1837 + SYS___UNLINK_A = 0x72E // 1838 + SYS___GAI_STRERROR_A = 0x72F // 1839 + SYS___EXTLINK_NP_A = 0x730 // 1840 + SYS___ISALNUM_A = 0x731 // 1841 + SYS___ISALPHA_A = 0x732 // 1842 + SYS___A2E_S = 0x733 // 1843 + SYS___ISCNTRL_A = 0x734 // 1844 + SYS___ISDIGIT_A = 0x735 // 1845 + SYS___ISGRAPH_A = 0x736 // 1846 + SYS___ISLOWER_A = 0x737 // 1847 + SYS___ISPRINT_A = 0x738 // 1848 + SYS___ISPUNCT_A = 0x739 // 1849 + SYS___ISSPACE_A = 0x73A // 1850 + SYS___ISUPPER_A = 0x73B // 1851 + SYS___ISXDIGIT_A = 0x73C // 1852 + SYS___TOLOWER_A = 0x73D // 1853 + SYS___TOUPPER_A = 0x73E // 1854 + SYS___ISWALNUM_A = 0x73F // 1855 + SYS___ISWALPHA_A = 0x740 // 1856 + SYS___A2E_L = 0x741 // 1857 + SYS___ISWCNTRL_A = 0x742 // 1858 + SYS___ISWDIGIT_A = 0x743 // 1859 + SYS___ISWGRAPH_A = 0x744 // 1860 + SYS___ISWLOWER_A = 0x745 // 1861 + SYS___ISWPRINT_A = 0x746 // 1862 + SYS___ISWPUNCT_A = 0x747 // 1863 + SYS___ISWSPACE_A = 0x748 // 1864 + SYS___ISWUPPER_A = 0x749 // 1865 + SYS___ISWXDIGIT_A = 0x74A // 1866 + SYS___CONFSTR_A = 0x74B // 1867 + SYS___FTOK_A = 0x74C // 1868 + SYS___MKTEMP_A = 0x74D // 1869 + SYS___FDOPEN_A = 0x74E // 1870 + SYS___FLDATA_A = 0x74F // 1871 + SYS___REMOVE_A = 0x750 // 1872 + SYS___RENAME_A = 0x751 // 1873 + SYS___TMPNAM_A = 0x752 // 1874 + SYS___FOPEN_A = 0x753 // 1875 + SYS___FREOPEN_A = 0x754 // 1876 + SYS___CUSERID_A = 0x755 // 1877 + SYS___POPEN_A = 0x756 // 1878 + SYS___TEMPNAM_A = 0x757 // 1879 + SYS___FTW_A = 0x758 // 1880 + SYS___GETGRENT_A = 0x759 // 1881 + SYS___GETGRGID_A = 0x75A // 1882 + SYS___GETGRNAM_A = 0x75B // 1883 + SYS___GETGROUPSBYNAME_A = 0x75C // 1884 + SYS___GETHOSTENT_A = 0x75D // 1885 + SYS___GETHOSTNAME_A = 0x75E // 1886 + SYS___GETLOGIN_A = 0x75F // 1887 + SYS___INET_NTOP_A = 0x760 // 1888 + SYS___GETPASS_A = 0x761 // 1889 + SYS___GETPWENT_A = 0x762 // 1890 + SYS___GETPWNAM_A = 0x763 // 1891 + SYS___GETPWUID_A = 0x764 // 1892 + SYS_____CHECK_RESOURCE_AUTH_NP_A = 0x765 // 1893 + SYS___CHECKSCHENV_A = 0x766 // 1894 + SYS___CONNECTSERVER_A = 0x767 // 1895 + SYS___CONNECTWORKMGR_A = 0x768 // 1896 + SYS_____CONSOLE_A = 0x769 // 1897 + SYS___CREATEWORKUNIT_A = 0x76A // 1898 + SYS___CTERMID_A = 0x76B // 1899 + SYS___FMTMSG_A = 0x76C // 1900 + SYS___INITGROUPS_A = 0x76D // 1901 + SYS_____LOGIN_A = 0x76E // 1902 + SYS___MSGRCV_A = 0x76F // 1903 + SYS___MSGSND_A = 0x770 // 1904 + SYS___MSGXRCV_A = 0x771 // 1905 + SYS___NFTW_A = 0x772 // 1906 + SYS_____PASSWD_A = 0x773 // 1907 + SYS___PTHREAD_SECURITY_NP_A = 0x774 // 1908 + SYS___QUERYMETRICS_A = 0x775 // 1909 + SYS___QUERYSCHENV = 0x776 // 1910 + SYS___READV_A = 0x777 // 1911 + SYS_____SERVER_CLASSIFY_A = 0x778 // 1912 + SYS_____SERVER_INIT_A = 0x779 // 1913 + SYS_____SERVER_PWU_A = 0x77A // 1914 + SYS___STRCASECMP_A = 0x77B // 1915 + SYS___STRNCASECMP_A = 0x77C // 1916 + SYS___TTYNAME_A = 0x77D // 1917 + SYS___UNAME_A = 0x77E // 1918 + SYS___UTIMES_A = 0x77F // 1919 + SYS___W_GETPSENT_A = 0x780 // 1920 + SYS___WRITEV_A = 0x781 // 1921 + SYS___W_STATFS_A = 0x782 // 1922 + SYS___W_STATVFS_A = 0x783 // 1923 + SYS___FPUTC_A = 0x784 // 1924 + SYS___PUTCHAR_A = 0x785 // 1925 + SYS___PUTS_A = 0x786 // 1926 + SYS___FGETS_A = 0x787 // 1927 + SYS___GETS_A = 0x788 // 1928 + SYS___FPUTS_A = 0x789 // 1929 + SYS___FREAD_A = 0x78A // 1930 + SYS___FWRITE_A = 0x78B // 1931 + SYS___OPEN_O_A = 0x78C // 1932 + SYS___ISASCII = 0x78D // 1933 + SYS___CREAT_O_A = 0x78E // 1934 + SYS___ENVNA = 0x78F // 1935 + SYS___PUTC_A = 0x790 // 1936 + SYS___AE_THREAD_SETMODE = 0x791 // 1937 + SYS___AE_THREAD_SWAPMODE = 0x792 // 1938 + SYS___GETNETBYADDR_A = 0x793 // 1939 + SYS___GETNETBYNAME_A = 0x794 // 1940 + SYS___GETNETENT_A = 0x795 // 1941 + SYS___GETPROTOBYNAME_A = 0x796 // 1942 + SYS___GETPROTOBYNUMBER_A = 0x797 // 1943 + SYS___GETPROTOENT_A = 0x798 // 1944 + SYS___GETSERVBYNAME_A = 0x799 // 1945 + SYS___GETSERVBYPORT_A = 0x79A // 1946 + SYS___GETSERVENT_A = 0x79B // 1947 + SYS___ASCTIME_A = 0x79C // 1948 + SYS___CTIME_A = 0x79D // 1949 + SYS___GETDATE_A = 0x79E // 1950 + SYS___TZSET_A = 0x79F // 1951 + SYS___UTIME_A = 0x7A0 // 1952 + SYS___ASCTIME_R_A = 0x7A1 // 1953 + SYS___CTIME_R_A = 0x7A2 // 1954 + SYS___STRTOLL_A = 0x7A3 // 1955 + SYS___STRTOULL_A = 0x7A4 // 1956 + SYS___FPUTWC_A = 0x7A5 // 1957 + SYS___PUTWC_A = 0x7A6 // 1958 + SYS___PUTWCHAR_A = 0x7A7 // 1959 + SYS___FPUTWS_A = 0x7A8 // 1960 + SYS___UNGETWC_A = 0x7A9 // 1961 + SYS___FGETWC_A = 0x7AA // 1962 + SYS___GETWC_A = 0x7AB // 1963 + SYS___GETWCHAR_A = 0x7AC // 1964 + SYS___FGETWS_A = 0x7AD // 1965 + SYS___GETTIMEOFDAY_A = 0x7AE // 1966 + SYS___GMTIME_A = 0x7AF // 1967 + SYS___GMTIME_R_A = 0x7B0 // 1968 + SYS___LOCALTIME_A = 0x7B1 // 1969 + SYS___LOCALTIME_R_A = 0x7B2 // 1970 + SYS___MKTIME_A = 0x7B3 // 1971 + SYS___TZZNA = 0x7B4 // 1972 + SYS_UNATEXIT = 0x7B5 // 1973 + SYS___CEE3DMP_A = 0x7B6 // 1974 + SYS___CDUMP_A = 0x7B7 // 1975 + SYS___CSNAP_A = 0x7B8 // 1976 + SYS___CTEST_A = 0x7B9 // 1977 + SYS___CTRACE_A = 0x7BA // 1978 + SYS___VSWPRNTF2_A = 0x7BB // 1979 + SYS___INET_PTON_A = 0x7BC // 1980 + SYS___SYSLOG_A = 0x7BD // 1981 + SYS___CRYPT_A = 0x7BE // 1982 + SYS_____OPENDIR2_A = 0x7BF // 1983 + SYS_____READDIR2_A = 0x7C0 // 1984 + SYS___OPENDIR_A = 0x7C2 // 1986 + SYS___READDIR_A = 0x7C3 // 1987 + SYS_PREAD = 0x7C7 // 1991 + SYS_PWRITE = 0x7C8 // 1992 + SYS_M_CREATE_LAYOUT = 0x7C9 // 1993 + SYS_M_DESTROY_LAYOUT = 0x7CA // 1994 + SYS_M_GETVALUES_LAYOUT = 0x7CB // 1995 + SYS_M_SETVALUES_LAYOUT = 0x7CC // 1996 + SYS_M_TRANSFORM_LAYOUT = 0x7CD // 1997 + SYS_M_WTRANSFORM_LAYOUT = 0x7CE // 1998 + SYS_FWPRINTF = 0x7D1 // 2001 + SYS_WPRINTF = 0x7D2 // 2002 + SYS_VFWPRINT = 0x7D3 // 2003 + SYS_VFWPRINTF = 0x7D3 // 2003 + SYS_VWPRINTF = 0x7D4 // 2004 + SYS_FWSCANF = 0x7D5 // 2005 + SYS_WSCANF = 0x7D6 // 2006 + SYS_WCTRANS = 0x7D7 // 2007 + SYS_TOWCTRAN = 0x7D8 // 2008 + SYS_TOWCTRANS = 0x7D8 // 2008 + SYS___WCSTOD_A = 0x7D9 // 2009 + SYS___WCSTOL_A = 0x7DA // 2010 + SYS___WCSTOUL_A = 0x7DB // 2011 + SYS___BASENAME_A = 0x7DC // 2012 + SYS___DIRNAME_A = 0x7DD // 2013 + SYS___GLOB_A = 0x7DE // 2014 + SYS_FWIDE = 0x7DF // 2015 + SYS___OSNAME = 0x7E0 // 2016 + SYS_____OSNAME_A = 0x7E1 // 2017 + SYS___BTOWC_A = 0x7E4 // 2020 + SYS___WCTOB_A = 0x7E5 // 2021 + SYS___DBM_OPEN_A = 0x7E6 // 2022 + SYS___VFPRINTF2_A = 0x7E7 // 2023 + SYS___VPRINTF2_A = 0x7E8 // 2024 + SYS___VSPRINTF2_A = 0x7E9 // 2025 + SYS___CEIL_H = 0x7EA // 2026 + SYS___FLOOR_H = 0x7EB // 2027 + SYS___MODF_H = 0x7EC // 2028 + SYS___FABS_H = 0x7ED // 2029 + SYS___J0_H = 0x7EE // 2030 + SYS___J1_H = 0x7EF // 2031 + SYS___JN_H = 0x7F0 // 2032 + SYS___Y0_H = 0x7F1 // 2033 + SYS___Y1_H = 0x7F2 // 2034 + SYS___YN_H = 0x7F3 // 2035 + SYS___CEILF_H = 0x7F4 // 2036 + SYS___CEILL_H = 0x7F5 // 2037 + SYS___FLOORF_H = 0x7F6 // 2038 + SYS___FLOORL_H = 0x7F7 // 2039 + SYS___MODFF_H = 0x7F8 // 2040 + SYS___MODFL_H = 0x7F9 // 2041 + SYS___FABSF_H = 0x7FA // 2042 + SYS___FABSL_H = 0x7FB // 2043 + SYS___MALLOC24 = 0x7FC // 2044 + SYS___MALLOC31 = 0x7FD // 2045 + SYS_ACL_INIT = 0x7FE // 2046 + SYS_ACL_FREE = 0x7FF // 2047 + SYS_ACL_FIRST_ENTRY = 0x800 // 2048 + SYS_ACL_GET_ENTRY = 0x801 // 2049 + SYS_ACL_VALID = 0x802 // 2050 + SYS_ACL_CREATE_ENTRY = 0x803 // 2051 + SYS_ACL_DELETE_ENTRY = 0x804 // 2052 + SYS_ACL_UPDATE_ENTRY = 0x805 // 2053 + SYS_ACL_DELETE_FD = 0x806 // 2054 + SYS_ACL_DELETE_FILE = 0x807 // 2055 + SYS_ACL_GET_FD = 0x808 // 2056 + SYS_ACL_GET_FILE = 0x809 // 2057 + SYS_ACL_SET_FD = 0x80A // 2058 + SYS_ACL_SET_FILE = 0x80B // 2059 + SYS_ACL_FROM_TEXT = 0x80C // 2060 + SYS_ACL_TO_TEXT = 0x80D // 2061 + SYS_ACL_SORT = 0x80E // 2062 + SYS___SHUTDOWN_REGISTRATION = 0x80F // 2063 + SYS___ERFL_B = 0x810 // 2064 + SYS___ERFCL_B = 0x811 // 2065 + SYS___LGAMMAL_B = 0x812 // 2066 + SYS___SETHOOKEVENTS = 0x813 // 2067 + SYS_IF_NAMETOINDEX = 0x814 // 2068 + SYS_IF_INDEXTONAME = 0x815 // 2069 + SYS_IF_NAMEINDEX = 0x816 // 2070 + SYS_IF_FREENAMEINDEX = 0x817 // 2071 + SYS_GETADDRINFO = 0x818 // 2072 + SYS_GETNAMEINFO = 0x819 // 2073 + SYS_FREEADDRINFO = 0x81A // 2074 + SYS_GAI_STRERROR = 0x81B // 2075 + SYS_REXEC_AF = 0x81C // 2076 + SYS___POE = 0x81D // 2077 + SYS___DYNALLOC_A = 0x81F // 2079 + SYS___DYNFREE_A = 0x820 // 2080 + SYS___RES_QUERY_A = 0x821 // 2081 + SYS___RES_SEARCH_A = 0x822 // 2082 + SYS___RES_QUERYDOMAIN_A = 0x823 // 2083 + SYS___RES_MKQUERY_A = 0x824 // 2084 + SYS___RES_SEND_A = 0x825 // 2085 + SYS___DN_EXPAND_A = 0x826 // 2086 + SYS___DN_SKIPNAME_A = 0x827 // 2087 + SYS___DN_COMP_A = 0x828 // 2088 + SYS___DN_FIND_A = 0x829 // 2089 + SYS___NLIST_A = 0x82A // 2090 + SYS_____TCGETCP_A = 0x82B // 2091 + SYS_____TCSETCP_A = 0x82C // 2092 + SYS_____W_PIOCTL_A = 0x82E // 2094 + SYS___INET_ADDR_A = 0x82F // 2095 + SYS___INET_NTOA_A = 0x830 // 2096 + SYS___INET_NETWORK_A = 0x831 // 2097 + SYS___ACCEPT_A = 0x832 // 2098 + SYS___ACCEPT_AND_RECV_A = 0x833 // 2099 + SYS___BIND_A = 0x834 // 2100 + SYS___CONNECT_A = 0x835 // 2101 + SYS___GETPEERNAME_A = 0x836 // 2102 + SYS___GETSOCKNAME_A = 0x837 // 2103 + SYS___RECVFROM_A = 0x838 // 2104 + SYS___SENDTO_A = 0x839 // 2105 + SYS___SENDMSG_A = 0x83A // 2106 + SYS___RECVMSG_A = 0x83B // 2107 + SYS_____LCHATTR_A = 0x83C // 2108 + SYS___CABEND = 0x83D // 2109 + SYS___LE_CIB_GET = 0x83E // 2110 + SYS___SET_LAA_FOR_JIT = 0x83F // 2111 + SYS___LCHATTR = 0x840 // 2112 + SYS___WRITEDOWN = 0x841 // 2113 + SYS_PTHREAD_MUTEX_INIT2 = 0x842 // 2114 + SYS___ACOSHF_B = 0x843 // 2115 + SYS___ACOSHL_B = 0x844 // 2116 + SYS___ASINHF_B = 0x845 // 2117 + SYS___ASINHL_B = 0x846 // 2118 + SYS___ATANHF_B = 0x847 // 2119 + SYS___ATANHL_B = 0x848 // 2120 + SYS___CBRTF_B = 0x849 // 2121 + SYS___CBRTL_B = 0x84A // 2122 + SYS___COPYSIGNF_B = 0x84B // 2123 + SYS___COPYSIGNL_B = 0x84C // 2124 + SYS___COTANF_B = 0x84D // 2125 + SYS___COTAN_B = 0x84E // 2126 + SYS___COTANL_B = 0x84F // 2127 + SYS___EXP2F_B = 0x850 // 2128 + SYS___EXP2L_B = 0x851 // 2129 + SYS___EXPM1F_B = 0x852 // 2130 + SYS___EXPM1L_B = 0x853 // 2131 + SYS___FDIMF_B = 0x854 // 2132 + SYS___FDIM_B = 0x855 // 2133 + SYS___FDIML_B = 0x856 // 2134 + SYS___HYPOTF_B = 0x857 // 2135 + SYS___HYPOTL_B = 0x858 // 2136 + SYS___LOG1PF_B = 0x859 // 2137 + SYS___LOG1PL_B = 0x85A // 2138 + SYS___LOG2F_B = 0x85B // 2139 + SYS___LOG2_B = 0x85C // 2140 + SYS___LOG2L_B = 0x85D // 2141 + SYS___REMAINDERF_B = 0x85E // 2142 + SYS___REMAINDERL_B = 0x85F // 2143 + SYS___REMQUOF_B = 0x860 // 2144 + SYS___REMQUO_B = 0x861 // 2145 + SYS___REMQUOL_B = 0x862 // 2146 + SYS___TGAMMAF_B = 0x863 // 2147 + SYS___TGAMMA_B = 0x864 // 2148 + SYS___TGAMMAL_B = 0x865 // 2149 + SYS___TRUNCF_B = 0x866 // 2150 + SYS___TRUNC_B = 0x867 // 2151 + SYS___TRUNCL_B = 0x868 // 2152 + SYS___LGAMMAF_B = 0x869 // 2153 + SYS___LROUNDF_B = 0x86A // 2154 + SYS___LROUND_B = 0x86B // 2155 + SYS___ERFF_B = 0x86C // 2156 + SYS___ERFCF_B = 0x86D // 2157 + SYS_ACOSHF = 0x86E // 2158 + SYS_ACOSHL = 0x86F // 2159 + SYS_ASINHF = 0x870 // 2160 + SYS_ASINHL = 0x871 // 2161 + SYS_ATANHF = 0x872 // 2162 + SYS_ATANHL = 0x873 // 2163 + SYS_CBRTF = 0x874 // 2164 + SYS_CBRTL = 0x875 // 2165 + SYS_COPYSIGNF = 0x876 // 2166 + SYS_CPYSIGNF = 0x876 // 2166 + SYS_COPYSIGNL = 0x877 // 2167 + SYS_CPYSIGNL = 0x877 // 2167 + SYS_COTANF = 0x878 // 2168 + SYS___COTANF = 0x878 // 2168 + SYS_COTAN = 0x879 // 2169 + SYS___COTAN = 0x879 // 2169 + SYS_COTANL = 0x87A // 2170 + SYS___COTANL = 0x87A // 2170 + SYS_EXP2F = 0x87B // 2171 + SYS_EXP2L = 0x87C // 2172 + SYS_EXPM1F = 0x87D // 2173 + SYS_EXPM1L = 0x87E // 2174 + SYS_FDIMF = 0x87F // 2175 + SYS_FDIM = 0x881 // 2177 + SYS_FDIML = 0x882 // 2178 + SYS_HYPOTF = 0x883 // 2179 + SYS_HYPOTL = 0x884 // 2180 + SYS_LOG1PF = 0x885 // 2181 + SYS_LOG1PL = 0x886 // 2182 + SYS_LOG2F = 0x887 // 2183 + SYS_LOG2 = 0x888 // 2184 + SYS_LOG2L = 0x889 // 2185 + SYS_REMAINDERF = 0x88A // 2186 + SYS_REMAINDF = 0x88A // 2186 + SYS_REMAINDERL = 0x88B // 2187 + SYS_REMAINDL = 0x88B // 2187 + SYS_REMQUOF = 0x88C // 2188 + SYS_REMQUO = 0x88D // 2189 + SYS_REMQUOL = 0x88E // 2190 + SYS_TGAMMAF = 0x88F // 2191 + SYS_TGAMMA = 0x890 // 2192 + SYS_TGAMMAL = 0x891 // 2193 + SYS_TRUNCF = 0x892 // 2194 + SYS_TRUNC = 0x893 // 2195 + SYS_TRUNCL = 0x894 // 2196 + SYS_LGAMMAF = 0x895 // 2197 + SYS_LGAMMAL = 0x896 // 2198 + SYS_LROUNDF = 0x897 // 2199 + SYS_LROUND = 0x898 // 2200 + SYS_ERFF = 0x899 // 2201 + SYS_ERFL = 0x89A // 2202 + SYS_ERFCF = 0x89B // 2203 + SYS_ERFCL = 0x89C // 2204 + SYS___EXP2_B = 0x89D // 2205 + SYS_EXP2 = 0x89E // 2206 + SYS___FAR_JUMP = 0x89F // 2207 + SYS___TCGETATTR_A = 0x8A1 // 2209 + SYS___TCSETATTR_A = 0x8A2 // 2210 + SYS___SUPERKILL = 0x8A4 // 2212 + SYS___LE_CONDITION_TOKEN_BUILD = 0x8A5 // 2213 + SYS___LE_MSG_ADD_INSERT = 0x8A6 // 2214 + SYS___LE_MSG_GET = 0x8A7 // 2215 + SYS___LE_MSG_GET_AND_WRITE = 0x8A8 // 2216 + SYS___LE_MSG_WRITE = 0x8A9 // 2217 + SYS___ITOA = 0x8AA // 2218 + SYS___UTOA = 0x8AB // 2219 + SYS___LTOA = 0x8AC // 2220 + SYS___ULTOA = 0x8AD // 2221 + SYS___LLTOA = 0x8AE // 2222 + SYS___ULLTOA = 0x8AF // 2223 + SYS___ITOA_A = 0x8B0 // 2224 + SYS___UTOA_A = 0x8B1 // 2225 + SYS___LTOA_A = 0x8B2 // 2226 + SYS___ULTOA_A = 0x8B3 // 2227 + SYS___LLTOA_A = 0x8B4 // 2228 + SYS___ULLTOA_A = 0x8B5 // 2229 + SYS_____GETENV_A = 0x8C3 // 2243 + SYS___REXEC_A = 0x8C4 // 2244 + SYS___REXEC_AF_A = 0x8C5 // 2245 + SYS___GETUTXENT_A = 0x8C6 // 2246 + SYS___GETUTXID_A = 0x8C7 // 2247 + SYS___GETUTXLINE_A = 0x8C8 // 2248 + SYS___PUTUTXLINE_A = 0x8C9 // 2249 + SYS_____UTMPXNAME_A = 0x8CA // 2250 + SYS___PUTC_UNLOCKED_A = 0x8CB // 2251 + SYS___PUTCHAR_UNLOCKED_A = 0x8CC // 2252 + SYS___SNPRINTF_A = 0x8CD // 2253 + SYS___VSNPRINTF_A = 0x8CE // 2254 + SYS___DLOPEN_A = 0x8D0 // 2256 + SYS___DLSYM_A = 0x8D1 // 2257 + SYS___DLERROR_A = 0x8D2 // 2258 + SYS_FLOCKFILE = 0x8D3 // 2259 + SYS_FTRYLOCKFILE = 0x8D4 // 2260 + SYS_FUNLOCKFILE = 0x8D5 // 2261 + SYS_GETC_UNLOCKED = 0x8D6 // 2262 + SYS_GETCHAR_UNLOCKED = 0x8D7 // 2263 + SYS_PUTC_UNLOCKED = 0x8D8 // 2264 + SYS_PUTCHAR_UNLOCKED = 0x8D9 // 2265 + SYS_SNPRINTF = 0x8DA // 2266 + SYS_VSNPRINTF = 0x8DB // 2267 + SYS_DLOPEN = 0x8DD // 2269 + SYS_DLSYM = 0x8DE // 2270 + SYS_DLCLOSE = 0x8DF // 2271 + SYS_DLERROR = 0x8E0 // 2272 + SYS___SET_EXCEPTION_HANDLER = 0x8E2 // 2274 + SYS___RESET_EXCEPTION_HANDLER = 0x8E3 // 2275 + SYS___VHM_EVENT = 0x8E4 // 2276 + SYS___ABS_H = 0x8E6 // 2278 + SYS___ABSF_H = 0x8E7 // 2279 + SYS___ABSL_H = 0x8E8 // 2280 + SYS___ACOS_H = 0x8E9 // 2281 + SYS___ACOSF_H = 0x8EA // 2282 + SYS___ACOSL_H = 0x8EB // 2283 + SYS___ACOSH_H = 0x8EC // 2284 + SYS___ASIN_H = 0x8ED // 2285 + SYS___ASINF_H = 0x8EE // 2286 + SYS___ASINL_H = 0x8EF // 2287 + SYS___ASINH_H = 0x8F0 // 2288 + SYS___ATAN_H = 0x8F1 // 2289 + SYS___ATANF_H = 0x8F2 // 2290 + SYS___ATANL_H = 0x8F3 // 2291 + SYS___ATANH_H = 0x8F4 // 2292 + SYS___ATANHF_H = 0x8F5 // 2293 + SYS___ATANHL_H = 0x8F6 // 2294 + SYS___ATAN2_H = 0x8F7 // 2295 + SYS___ATAN2F_H = 0x8F8 // 2296 + SYS___ATAN2L_H = 0x8F9 // 2297 + SYS___CBRT_H = 0x8FA // 2298 + SYS___COPYSIGNF_H = 0x8FB // 2299 + SYS___COPYSIGNL_H = 0x8FC // 2300 + SYS___COS_H = 0x8FD // 2301 + SYS___COSF_H = 0x8FE // 2302 + SYS___COSL_H = 0x8FF // 2303 + SYS___COSHF_H = 0x900 // 2304 + SYS___COSHL_H = 0x901 // 2305 + SYS___COTAN_H = 0x902 // 2306 + SYS___COTANF_H = 0x903 // 2307 + SYS___COTANL_H = 0x904 // 2308 + SYS___ERF_H = 0x905 // 2309 + SYS___ERFF_H = 0x906 // 2310 + SYS___ERFL_H = 0x907 // 2311 + SYS___ERFC_H = 0x908 // 2312 + SYS___ERFCF_H = 0x909 // 2313 + SYS___ERFCL_H = 0x90A // 2314 + SYS___EXP_H = 0x90B // 2315 + SYS___EXPF_H = 0x90C // 2316 + SYS___EXPL_H = 0x90D // 2317 + SYS___EXPM1_H = 0x90E // 2318 + SYS___FDIM_H = 0x90F // 2319 + SYS___FDIMF_H = 0x910 // 2320 + SYS___FDIML_H = 0x911 // 2321 + SYS___FMOD_H = 0x912 // 2322 + SYS___FMODF_H = 0x913 // 2323 + SYS___FMODL_H = 0x914 // 2324 + SYS___GAMMA_H = 0x915 // 2325 + SYS___HYPOT_H = 0x916 // 2326 + SYS___ILOGB_H = 0x917 // 2327 + SYS___LGAMMA_H = 0x918 // 2328 + SYS___LGAMMAF_H = 0x919 // 2329 + SYS___LOG_H = 0x91A // 2330 + SYS___LOGF_H = 0x91B // 2331 + SYS___LOGL_H = 0x91C // 2332 + SYS___LOGB_H = 0x91D // 2333 + SYS___LOG2_H = 0x91E // 2334 + SYS___LOG2F_H = 0x91F // 2335 + SYS___LOG2L_H = 0x920 // 2336 + SYS___LOG1P_H = 0x921 // 2337 + SYS___LOG10_H = 0x922 // 2338 + SYS___LOG10F_H = 0x923 // 2339 + SYS___LOG10L_H = 0x924 // 2340 + SYS___LROUND_H = 0x925 // 2341 + SYS___LROUNDF_H = 0x926 // 2342 + SYS___NEXTAFTER_H = 0x927 // 2343 + SYS___POW_H = 0x928 // 2344 + SYS___POWF_H = 0x929 // 2345 + SYS___POWL_H = 0x92A // 2346 + SYS___REMAINDER_H = 0x92B // 2347 + SYS___RINT_H = 0x92C // 2348 + SYS___SCALB_H = 0x92D // 2349 + SYS___SIN_H = 0x92E // 2350 + SYS___SINF_H = 0x92F // 2351 + SYS___SINL_H = 0x930 // 2352 + SYS___SINH_H = 0x931 // 2353 + SYS___SINHF_H = 0x932 // 2354 + SYS___SINHL_H = 0x933 // 2355 + SYS___SQRT_H = 0x934 // 2356 + SYS___SQRTF_H = 0x935 // 2357 + SYS___SQRTL_H = 0x936 // 2358 + SYS___TAN_H = 0x937 // 2359 + SYS___TANF_H = 0x938 // 2360 + SYS___TANL_H = 0x939 // 2361 + SYS___TANH_H = 0x93A // 2362 + SYS___TANHF_H = 0x93B // 2363 + SYS___TANHL_H = 0x93C // 2364 + SYS___TGAMMA_H = 0x93D // 2365 + SYS___TGAMMAF_H = 0x93E // 2366 + SYS___TRUNC_H = 0x93F // 2367 + SYS___TRUNCF_H = 0x940 // 2368 + SYS___TRUNCL_H = 0x941 // 2369 + SYS___COSH_H = 0x942 // 2370 + SYS___LE_DEBUG_SET_RESUME_MCH = 0x943 // 2371 + SYS_VFSCANF = 0x944 // 2372 + SYS_VSCANF = 0x946 // 2374 + SYS_VSSCANF = 0x948 // 2376 + SYS_VFWSCANF = 0x94A // 2378 + SYS_VWSCANF = 0x94C // 2380 + SYS_VSWSCANF = 0x94E // 2382 + SYS_IMAXABS = 0x950 // 2384 + SYS_IMAXDIV = 0x951 // 2385 + SYS_STRTOIMAX = 0x952 // 2386 + SYS_STRTOUMAX = 0x953 // 2387 + SYS_WCSTOIMAX = 0x954 // 2388 + SYS_WCSTOUMAX = 0x955 // 2389 + SYS_ATOLL = 0x956 // 2390 + SYS_STRTOF = 0x957 // 2391 + SYS_STRTOLD = 0x958 // 2392 + SYS_WCSTOF = 0x959 // 2393 + SYS_WCSTOLD = 0x95A // 2394 + SYS_INET6_RTH_SPACE = 0x95B // 2395 + SYS_INET6_RTH_INIT = 0x95C // 2396 + SYS_INET6_RTH_ADD = 0x95D // 2397 + SYS_INET6_RTH_REVERSE = 0x95E // 2398 + SYS_INET6_RTH_SEGMENTS = 0x95F // 2399 + SYS_INET6_RTH_GETADDR = 0x960 // 2400 + SYS_INET6_OPT_INIT = 0x961 // 2401 + SYS_INET6_OPT_APPEND = 0x962 // 2402 + SYS_INET6_OPT_FINISH = 0x963 // 2403 + SYS_INET6_OPT_SET_VAL = 0x964 // 2404 + SYS_INET6_OPT_NEXT = 0x965 // 2405 + SYS_INET6_OPT_FIND = 0x966 // 2406 + SYS_INET6_OPT_GET_VAL = 0x967 // 2407 + SYS___POW_I = 0x987 // 2439 + SYS___POW_I_B = 0x988 // 2440 + SYS___POW_I_H = 0x989 // 2441 + SYS___POW_II = 0x98A // 2442 + SYS___POW_II_B = 0x98B // 2443 + SYS___POW_II_H = 0x98C // 2444 + SYS_CABS = 0x98E // 2446 + SYS___CABS_B = 0x98F // 2447 + SYS___CABS_H = 0x990 // 2448 + SYS_CABSF = 0x991 // 2449 + SYS___CABSF_B = 0x992 // 2450 + SYS___CABSF_H = 0x993 // 2451 + SYS_CABSL = 0x994 // 2452 + SYS___CABSL_B = 0x995 // 2453 + SYS___CABSL_H = 0x996 // 2454 + SYS_CACOS = 0x997 // 2455 + SYS___CACOS_B = 0x998 // 2456 + SYS___CACOS_H = 0x999 // 2457 + SYS_CACOSF = 0x99A // 2458 + SYS___CACOSF_B = 0x99B // 2459 + SYS___CACOSF_H = 0x99C // 2460 + SYS_CACOSL = 0x99D // 2461 + SYS___CACOSL_B = 0x99E // 2462 + SYS___CACOSL_H = 0x99F // 2463 + SYS_CACOSH = 0x9A0 // 2464 + SYS___CACOSH_B = 0x9A1 // 2465 + SYS___CACOSH_H = 0x9A2 // 2466 + SYS_CACOSHF = 0x9A3 // 2467 + SYS___CACOSHF_B = 0x9A4 // 2468 + SYS___CACOSHF_H = 0x9A5 // 2469 + SYS_CACOSHL = 0x9A6 // 2470 + SYS___CACOSHL_B = 0x9A7 // 2471 + SYS___CACOSHL_H = 0x9A8 // 2472 + SYS_CARG = 0x9A9 // 2473 + SYS___CARG_B = 0x9AA // 2474 + SYS___CARG_H = 0x9AB // 2475 + SYS_CARGF = 0x9AC // 2476 + SYS___CARGF_B = 0x9AD // 2477 + SYS___CARGF_H = 0x9AE // 2478 + SYS_CARGL = 0x9AF // 2479 + SYS___CARGL_B = 0x9B0 // 2480 + SYS___CARGL_H = 0x9B1 // 2481 + SYS_CASIN = 0x9B2 // 2482 + SYS___CASIN_B = 0x9B3 // 2483 + SYS___CASIN_H = 0x9B4 // 2484 + SYS_CASINF = 0x9B5 // 2485 + SYS___CASINF_B = 0x9B6 // 2486 + SYS___CASINF_H = 0x9B7 // 2487 + SYS_CASINL = 0x9B8 // 2488 + SYS___CASINL_B = 0x9B9 // 2489 + SYS___CASINL_H = 0x9BA // 2490 + SYS_CASINH = 0x9BB // 2491 + SYS___CASINH_B = 0x9BC // 2492 + SYS___CASINH_H = 0x9BD // 2493 + SYS_CASINHF = 0x9BE // 2494 + SYS___CASINHF_B = 0x9BF // 2495 + SYS___CASINHF_H = 0x9C0 // 2496 + SYS_CASINHL = 0x9C1 // 2497 + SYS___CASINHL_B = 0x9C2 // 2498 + SYS___CASINHL_H = 0x9C3 // 2499 + SYS_CATAN = 0x9C4 // 2500 + SYS___CATAN_B = 0x9C5 // 2501 + SYS___CATAN_H = 0x9C6 // 2502 + SYS_CATANF = 0x9C7 // 2503 + SYS___CATANF_B = 0x9C8 // 2504 + SYS___CATANF_H = 0x9C9 // 2505 + SYS_CATANL = 0x9CA // 2506 + SYS___CATANL_B = 0x9CB // 2507 + SYS___CATANL_H = 0x9CC // 2508 + SYS_CATANH = 0x9CD // 2509 + SYS___CATANH_B = 0x9CE // 2510 + SYS___CATANH_H = 0x9CF // 2511 + SYS_CATANHF = 0x9D0 // 2512 + SYS___CATANHF_B = 0x9D1 // 2513 + SYS___CATANHF_H = 0x9D2 // 2514 + SYS_CATANHL = 0x9D3 // 2515 + SYS___CATANHL_B = 0x9D4 // 2516 + SYS___CATANHL_H = 0x9D5 // 2517 + SYS_CCOS = 0x9D6 // 2518 + SYS___CCOS_B = 0x9D7 // 2519 + SYS___CCOS_H = 0x9D8 // 2520 + SYS_CCOSF = 0x9D9 // 2521 + SYS___CCOSF_B = 0x9DA // 2522 + SYS___CCOSF_H = 0x9DB // 2523 + SYS_CCOSL = 0x9DC // 2524 + SYS___CCOSL_B = 0x9DD // 2525 + SYS___CCOSL_H = 0x9DE // 2526 + SYS_CCOSH = 0x9DF // 2527 + SYS___CCOSH_B = 0x9E0 // 2528 + SYS___CCOSH_H = 0x9E1 // 2529 + SYS_CCOSHF = 0x9E2 // 2530 + SYS___CCOSHF_B = 0x9E3 // 2531 + SYS___CCOSHF_H = 0x9E4 // 2532 + SYS_CCOSHL = 0x9E5 // 2533 + SYS___CCOSHL_B = 0x9E6 // 2534 + SYS___CCOSHL_H = 0x9E7 // 2535 + SYS_CEXP = 0x9E8 // 2536 + SYS___CEXP_B = 0x9E9 // 2537 + SYS___CEXP_H = 0x9EA // 2538 + SYS_CEXPF = 0x9EB // 2539 + SYS___CEXPF_B = 0x9EC // 2540 + SYS___CEXPF_H = 0x9ED // 2541 + SYS_CEXPL = 0x9EE // 2542 + SYS___CEXPL_B = 0x9EF // 2543 + SYS___CEXPL_H = 0x9F0 // 2544 + SYS_CIMAG = 0x9F1 // 2545 + SYS___CIMAG_B = 0x9F2 // 2546 + SYS___CIMAG_H = 0x9F3 // 2547 + SYS_CIMAGF = 0x9F4 // 2548 + SYS___CIMAGF_B = 0x9F5 // 2549 + SYS___CIMAGF_H = 0x9F6 // 2550 + SYS_CIMAGL = 0x9F7 // 2551 + SYS___CIMAGL_B = 0x9F8 // 2552 + SYS___CIMAGL_H = 0x9F9 // 2553 + SYS___CLOG = 0x9FA // 2554 + SYS___CLOG_B = 0x9FB // 2555 + SYS___CLOG_H = 0x9FC // 2556 + SYS_CLOGF = 0x9FD // 2557 + SYS___CLOGF_B = 0x9FE // 2558 + SYS___CLOGF_H = 0x9FF // 2559 + SYS_CLOGL = 0xA00 // 2560 + SYS___CLOGL_B = 0xA01 // 2561 + SYS___CLOGL_H = 0xA02 // 2562 + SYS_CONJ = 0xA03 // 2563 + SYS___CONJ_B = 0xA04 // 2564 + SYS___CONJ_H = 0xA05 // 2565 + SYS_CONJF = 0xA06 // 2566 + SYS___CONJF_B = 0xA07 // 2567 + SYS___CONJF_H = 0xA08 // 2568 + SYS_CONJL = 0xA09 // 2569 + SYS___CONJL_B = 0xA0A // 2570 + SYS___CONJL_H = 0xA0B // 2571 + SYS_CPOW = 0xA0C // 2572 + SYS___CPOW_B = 0xA0D // 2573 + SYS___CPOW_H = 0xA0E // 2574 + SYS_CPOWF = 0xA0F // 2575 + SYS___CPOWF_B = 0xA10 // 2576 + SYS___CPOWF_H = 0xA11 // 2577 + SYS_CPOWL = 0xA12 // 2578 + SYS___CPOWL_B = 0xA13 // 2579 + SYS___CPOWL_H = 0xA14 // 2580 + SYS_CPROJ = 0xA15 // 2581 + SYS___CPROJ_B = 0xA16 // 2582 + SYS___CPROJ_H = 0xA17 // 2583 + SYS_CPROJF = 0xA18 // 2584 + SYS___CPROJF_B = 0xA19 // 2585 + SYS___CPROJF_H = 0xA1A // 2586 + SYS_CPROJL = 0xA1B // 2587 + SYS___CPROJL_B = 0xA1C // 2588 + SYS___CPROJL_H = 0xA1D // 2589 + SYS_CREAL = 0xA1E // 2590 + SYS___CREAL_B = 0xA1F // 2591 + SYS___CREAL_H = 0xA20 // 2592 + SYS_CREALF = 0xA21 // 2593 + SYS___CREALF_B = 0xA22 // 2594 + SYS___CREALF_H = 0xA23 // 2595 + SYS_CREALL = 0xA24 // 2596 + SYS___CREALL_B = 0xA25 // 2597 + SYS___CREALL_H = 0xA26 // 2598 + SYS_CSIN = 0xA27 // 2599 + SYS___CSIN_B = 0xA28 // 2600 + SYS___CSIN_H = 0xA29 // 2601 + SYS_CSINF = 0xA2A // 2602 + SYS___CSINF_B = 0xA2B // 2603 + SYS___CSINF_H = 0xA2C // 2604 + SYS_CSINL = 0xA2D // 2605 + SYS___CSINL_B = 0xA2E // 2606 + SYS___CSINL_H = 0xA2F // 2607 + SYS_CSINH = 0xA30 // 2608 + SYS___CSINH_B = 0xA31 // 2609 + SYS___CSINH_H = 0xA32 // 2610 + SYS_CSINHF = 0xA33 // 2611 + SYS___CSINHF_B = 0xA34 // 2612 + SYS___CSINHF_H = 0xA35 // 2613 + SYS_CSINHL = 0xA36 // 2614 + SYS___CSINHL_B = 0xA37 // 2615 + SYS___CSINHL_H = 0xA38 // 2616 + SYS_CSQRT = 0xA39 // 2617 + SYS___CSQRT_B = 0xA3A // 2618 + SYS___CSQRT_H = 0xA3B // 2619 + SYS_CSQRTF = 0xA3C // 2620 + SYS___CSQRTF_B = 0xA3D // 2621 + SYS___CSQRTF_H = 0xA3E // 2622 + SYS_CSQRTL = 0xA3F // 2623 + SYS___CSQRTL_B = 0xA40 // 2624 + SYS___CSQRTL_H = 0xA41 // 2625 + SYS_CTAN = 0xA42 // 2626 + SYS___CTAN_B = 0xA43 // 2627 + SYS___CTAN_H = 0xA44 // 2628 + SYS_CTANF = 0xA45 // 2629 + SYS___CTANF_B = 0xA46 // 2630 + SYS___CTANF_H = 0xA47 // 2631 + SYS_CTANL = 0xA48 // 2632 + SYS___CTANL_B = 0xA49 // 2633 + SYS___CTANL_H = 0xA4A // 2634 + SYS_CTANH = 0xA4B // 2635 + SYS___CTANH_B = 0xA4C // 2636 + SYS___CTANH_H = 0xA4D // 2637 + SYS_CTANHF = 0xA4E // 2638 + SYS___CTANHF_B = 0xA4F // 2639 + SYS___CTANHF_H = 0xA50 // 2640 + SYS_CTANHL = 0xA51 // 2641 + SYS___CTANHL_B = 0xA52 // 2642 + SYS___CTANHL_H = 0xA53 // 2643 + SYS___ACOSHF_H = 0xA54 // 2644 + SYS___ACOSHL_H = 0xA55 // 2645 + SYS___ASINHF_H = 0xA56 // 2646 + SYS___ASINHL_H = 0xA57 // 2647 + SYS___CBRTF_H = 0xA58 // 2648 + SYS___CBRTL_H = 0xA59 // 2649 + SYS___COPYSIGN_B = 0xA5A // 2650 + SYS___EXPM1F_H = 0xA5B // 2651 + SYS___EXPM1L_H = 0xA5C // 2652 + SYS___EXP2_H = 0xA5D // 2653 + SYS___EXP2F_H = 0xA5E // 2654 + SYS___EXP2L_H = 0xA5F // 2655 + SYS___LOG1PF_H = 0xA60 // 2656 + SYS___LOG1PL_H = 0xA61 // 2657 + SYS___LGAMMAL_H = 0xA62 // 2658 + SYS_FMA = 0xA63 // 2659 + SYS___FMA_B = 0xA64 // 2660 + SYS___FMA_H = 0xA65 // 2661 + SYS_FMAF = 0xA66 // 2662 + SYS___FMAF_B = 0xA67 // 2663 + SYS___FMAF_H = 0xA68 // 2664 + SYS_FMAL = 0xA69 // 2665 + SYS___FMAL_B = 0xA6A // 2666 + SYS___FMAL_H = 0xA6B // 2667 + SYS_FMAX = 0xA6C // 2668 + SYS___FMAX_B = 0xA6D // 2669 + SYS___FMAX_H = 0xA6E // 2670 + SYS_FMAXF = 0xA6F // 2671 + SYS___FMAXF_B = 0xA70 // 2672 + SYS___FMAXF_H = 0xA71 // 2673 + SYS_FMAXL = 0xA72 // 2674 + SYS___FMAXL_B = 0xA73 // 2675 + SYS___FMAXL_H = 0xA74 // 2676 + SYS_FMIN = 0xA75 // 2677 + SYS___FMIN_B = 0xA76 // 2678 + SYS___FMIN_H = 0xA77 // 2679 + SYS_FMINF = 0xA78 // 2680 + SYS___FMINF_B = 0xA79 // 2681 + SYS___FMINF_H = 0xA7A // 2682 + SYS_FMINL = 0xA7B // 2683 + SYS___FMINL_B = 0xA7C // 2684 + SYS___FMINL_H = 0xA7D // 2685 + SYS_ILOGBF = 0xA7E // 2686 + SYS___ILOGBF_B = 0xA7F // 2687 + SYS___ILOGBF_H = 0xA80 // 2688 + SYS_ILOGBL = 0xA81 // 2689 + SYS___ILOGBL_B = 0xA82 // 2690 + SYS___ILOGBL_H = 0xA83 // 2691 + SYS_LLRINT = 0xA84 // 2692 + SYS___LLRINT_B = 0xA85 // 2693 + SYS___LLRINT_H = 0xA86 // 2694 + SYS_LLRINTF = 0xA87 // 2695 + SYS___LLRINTF_B = 0xA88 // 2696 + SYS___LLRINTF_H = 0xA89 // 2697 + SYS_LLRINTL = 0xA8A // 2698 + SYS___LLRINTL_B = 0xA8B // 2699 + SYS___LLRINTL_H = 0xA8C // 2700 + SYS_LLROUND = 0xA8D // 2701 + SYS___LLROUND_B = 0xA8E // 2702 + SYS___LLROUND_H = 0xA8F // 2703 + SYS_LLROUNDF = 0xA90 // 2704 + SYS___LLROUNDF_B = 0xA91 // 2705 + SYS___LLROUNDF_H = 0xA92 // 2706 + SYS_LLROUNDL = 0xA93 // 2707 + SYS___LLROUNDL_B = 0xA94 // 2708 + SYS___LLROUNDL_H = 0xA95 // 2709 + SYS_LOGBF = 0xA96 // 2710 + SYS___LOGBF_B = 0xA97 // 2711 + SYS___LOGBF_H = 0xA98 // 2712 + SYS_LOGBL = 0xA99 // 2713 + SYS___LOGBL_B = 0xA9A // 2714 + SYS___LOGBL_H = 0xA9B // 2715 + SYS_LRINT = 0xA9C // 2716 + SYS___LRINT_B = 0xA9D // 2717 + SYS___LRINT_H = 0xA9E // 2718 + SYS_LRINTF = 0xA9F // 2719 + SYS___LRINTF_B = 0xAA0 // 2720 + SYS___LRINTF_H = 0xAA1 // 2721 + SYS_LRINTL = 0xAA2 // 2722 + SYS___LRINTL_B = 0xAA3 // 2723 + SYS___LRINTL_H = 0xAA4 // 2724 + SYS_LROUNDL = 0xAA5 // 2725 + SYS___LROUNDL_B = 0xAA6 // 2726 + SYS___LROUNDL_H = 0xAA7 // 2727 + SYS_NAN = 0xAA8 // 2728 + SYS___NAN_B = 0xAA9 // 2729 + SYS_NANF = 0xAAA // 2730 + SYS___NANF_B = 0xAAB // 2731 + SYS_NANL = 0xAAC // 2732 + SYS___NANL_B = 0xAAD // 2733 + SYS_NEARBYINT = 0xAAE // 2734 + SYS___NEARBYINT_B = 0xAAF // 2735 + SYS___NEARBYINT_H = 0xAB0 // 2736 + SYS_NEARBYINTF = 0xAB1 // 2737 + SYS___NEARBYINTF_B = 0xAB2 // 2738 + SYS___NEARBYINTF_H = 0xAB3 // 2739 + SYS_NEARBYINTL = 0xAB4 // 2740 + SYS___NEARBYINTL_B = 0xAB5 // 2741 + SYS___NEARBYINTL_H = 0xAB6 // 2742 + SYS_NEXTAFTERF = 0xAB7 // 2743 + SYS___NEXTAFTERF_B = 0xAB8 // 2744 + SYS___NEXTAFTERF_H = 0xAB9 // 2745 + SYS_NEXTAFTERL = 0xABA // 2746 + SYS___NEXTAFTERL_B = 0xABB // 2747 + SYS___NEXTAFTERL_H = 0xABC // 2748 + SYS_NEXTTOWARD = 0xABD // 2749 + SYS___NEXTTOWARD_B = 0xABE // 2750 + SYS___NEXTTOWARD_H = 0xABF // 2751 + SYS_NEXTTOWARDF = 0xAC0 // 2752 + SYS___NEXTTOWARDF_B = 0xAC1 // 2753 + SYS___NEXTTOWARDF_H = 0xAC2 // 2754 + SYS_NEXTTOWARDL = 0xAC3 // 2755 + SYS___NEXTTOWARDL_B = 0xAC4 // 2756 + SYS___NEXTTOWARDL_H = 0xAC5 // 2757 + SYS___REMAINDERF_H = 0xAC6 // 2758 + SYS___REMAINDERL_H = 0xAC7 // 2759 + SYS___REMQUO_H = 0xAC8 // 2760 + SYS___REMQUOF_H = 0xAC9 // 2761 + SYS___REMQUOL_H = 0xACA // 2762 + SYS_RINTF = 0xACB // 2763 + SYS___RINTF_B = 0xACC // 2764 + SYS_RINTL = 0xACD // 2765 + SYS___RINTL_B = 0xACE // 2766 + SYS_ROUND = 0xACF // 2767 + SYS___ROUND_B = 0xAD0 // 2768 + SYS___ROUND_H = 0xAD1 // 2769 + SYS_ROUNDF = 0xAD2 // 2770 + SYS___ROUNDF_B = 0xAD3 // 2771 + SYS___ROUNDF_H = 0xAD4 // 2772 + SYS_ROUNDL = 0xAD5 // 2773 + SYS___ROUNDL_B = 0xAD6 // 2774 + SYS___ROUNDL_H = 0xAD7 // 2775 + SYS_SCALBLN = 0xAD8 // 2776 + SYS___SCALBLN_B = 0xAD9 // 2777 + SYS___SCALBLN_H = 0xADA // 2778 + SYS_SCALBLNF = 0xADB // 2779 + SYS___SCALBLNF_B = 0xADC // 2780 + SYS___SCALBLNF_H = 0xADD // 2781 + SYS_SCALBLNL = 0xADE // 2782 + SYS___SCALBLNL_B = 0xADF // 2783 + SYS___SCALBLNL_H = 0xAE0 // 2784 + SYS___SCALBN_B = 0xAE1 // 2785 + SYS___SCALBN_H = 0xAE2 // 2786 + SYS_SCALBNF = 0xAE3 // 2787 + SYS___SCALBNF_B = 0xAE4 // 2788 + SYS___SCALBNF_H = 0xAE5 // 2789 + SYS_SCALBNL = 0xAE6 // 2790 + SYS___SCALBNL_B = 0xAE7 // 2791 + SYS___SCALBNL_H = 0xAE8 // 2792 + SYS___TGAMMAL_H = 0xAE9 // 2793 + SYS_FECLEAREXCEPT = 0xAEA // 2794 + SYS_FEGETENV = 0xAEB // 2795 + SYS_FEGETEXCEPTFLAG = 0xAEC // 2796 + SYS_FEGETROUND = 0xAED // 2797 + SYS_FEHOLDEXCEPT = 0xAEE // 2798 + SYS_FERAISEEXCEPT = 0xAEF // 2799 + SYS_FESETENV = 0xAF0 // 2800 + SYS_FESETEXCEPTFLAG = 0xAF1 // 2801 + SYS_FESETROUND = 0xAF2 // 2802 + SYS_FETESTEXCEPT = 0xAF3 // 2803 + SYS_FEUPDATEENV = 0xAF4 // 2804 + SYS___COPYSIGN_H = 0xAF5 // 2805 + SYS___HYPOTF_H = 0xAF6 // 2806 + SYS___HYPOTL_H = 0xAF7 // 2807 + SYS___CLASS = 0xAFA // 2810 + SYS___CLASS_B = 0xAFB // 2811 + SYS___CLASS_H = 0xAFC // 2812 + SYS___ISBLANK_A = 0xB2E // 2862 + SYS___ISWBLANK_A = 0xB2F // 2863 + SYS___LROUND_FIXUP = 0xB30 // 2864 + SYS___LROUNDF_FIXUP = 0xB31 // 2865 + SYS_SCHED_YIELD = 0xB32 // 2866 + SYS_STRERROR_R = 0xB33 // 2867 + SYS_UNSETENV = 0xB34 // 2868 + SYS___LGAMMA_H_C99 = 0xB38 // 2872 + SYS___LGAMMA_B_C99 = 0xB39 // 2873 + SYS___LGAMMA_R_C99 = 0xB3A // 2874 + SYS___FTELL2 = 0xB3B // 2875 + SYS___FSEEK2 = 0xB3C // 2876 + SYS___STATIC_REINIT = 0xB3D // 2877 + SYS_PTHREAD_ATTR_GETSTACK = 0xB3E // 2878 + SYS_PTHREAD_ATTR_SETSTACK = 0xB3F // 2879 + SYS___TGAMMA_H_C99 = 0xB78 // 2936 + SYS___TGAMMAF_H_C99 = 0xB79 // 2937 + SYS___LE_TRACEBACK = 0xB7A // 2938 + SYS___MUST_STAY_CLEAN = 0xB7C // 2940 + SYS___O_ENV = 0xB7D // 2941 + SYS_ACOSD32 = 0xB7E // 2942 + SYS_ACOSD64 = 0xB7F // 2943 + SYS_ACOSD128 = 0xB80 // 2944 + SYS_ACOSHD32 = 0xB81 // 2945 + SYS_ACOSHD64 = 0xB82 // 2946 + SYS_ACOSHD128 = 0xB83 // 2947 + SYS_ASIND32 = 0xB84 // 2948 + SYS_ASIND64 = 0xB85 // 2949 + SYS_ASIND128 = 0xB86 // 2950 + SYS_ASINHD32 = 0xB87 // 2951 + SYS_ASINHD64 = 0xB88 // 2952 + SYS_ASINHD128 = 0xB89 // 2953 + SYS_ATAND32 = 0xB8A // 2954 + SYS_ATAND64 = 0xB8B // 2955 + SYS_ATAND128 = 0xB8C // 2956 + SYS_ATAN2D32 = 0xB8D // 2957 + SYS_ATAN2D64 = 0xB8E // 2958 + SYS_ATAN2D128 = 0xB8F // 2959 + SYS_ATANHD32 = 0xB90 // 2960 + SYS_ATANHD64 = 0xB91 // 2961 + SYS_ATANHD128 = 0xB92 // 2962 + SYS_CBRTD32 = 0xB93 // 2963 + SYS_CBRTD64 = 0xB94 // 2964 + SYS_CBRTD128 = 0xB95 // 2965 + SYS_CEILD32 = 0xB96 // 2966 + SYS_CEILD64 = 0xB97 // 2967 + SYS_CEILD128 = 0xB98 // 2968 + SYS___CLASS2 = 0xB99 // 2969 + SYS___CLASS2_B = 0xB9A // 2970 + SYS___CLASS2_H = 0xB9B // 2971 + SYS_COPYSIGND32 = 0xB9C // 2972 + SYS_COPYSIGND64 = 0xB9D // 2973 + SYS_COPYSIGND128 = 0xB9E // 2974 + SYS_COSD32 = 0xB9F // 2975 + SYS_COSD64 = 0xBA0 // 2976 + SYS_COSD128 = 0xBA1 // 2977 + SYS_COSHD32 = 0xBA2 // 2978 + SYS_COSHD64 = 0xBA3 // 2979 + SYS_COSHD128 = 0xBA4 // 2980 + SYS_ERFD32 = 0xBA5 // 2981 + SYS_ERFD64 = 0xBA6 // 2982 + SYS_ERFD128 = 0xBA7 // 2983 + SYS_ERFCD32 = 0xBA8 // 2984 + SYS_ERFCD64 = 0xBA9 // 2985 + SYS_ERFCD128 = 0xBAA // 2986 + SYS_EXPD32 = 0xBAB // 2987 + SYS_EXPD64 = 0xBAC // 2988 + SYS_EXPD128 = 0xBAD // 2989 + SYS_EXP2D32 = 0xBAE // 2990 + SYS_EXP2D64 = 0xBAF // 2991 + SYS_EXP2D128 = 0xBB0 // 2992 + SYS_EXPM1D32 = 0xBB1 // 2993 + SYS_EXPM1D64 = 0xBB2 // 2994 + SYS_EXPM1D128 = 0xBB3 // 2995 + SYS_FABSD32 = 0xBB4 // 2996 + SYS_FABSD64 = 0xBB5 // 2997 + SYS_FABSD128 = 0xBB6 // 2998 + SYS_FDIMD32 = 0xBB7 // 2999 + SYS_FDIMD64 = 0xBB8 // 3000 + SYS_FDIMD128 = 0xBB9 // 3001 + SYS_FE_DEC_GETROUND = 0xBBA // 3002 + SYS_FE_DEC_SETROUND = 0xBBB // 3003 + SYS_FLOORD32 = 0xBBC // 3004 + SYS_FLOORD64 = 0xBBD // 3005 + SYS_FLOORD128 = 0xBBE // 3006 + SYS_FMAD32 = 0xBBF // 3007 + SYS_FMAD64 = 0xBC0 // 3008 + SYS_FMAD128 = 0xBC1 // 3009 + SYS_FMAXD32 = 0xBC2 // 3010 + SYS_FMAXD64 = 0xBC3 // 3011 + SYS_FMAXD128 = 0xBC4 // 3012 + SYS_FMIND32 = 0xBC5 // 3013 + SYS_FMIND64 = 0xBC6 // 3014 + SYS_FMIND128 = 0xBC7 // 3015 + SYS_FMODD32 = 0xBC8 // 3016 + SYS_FMODD64 = 0xBC9 // 3017 + SYS_FMODD128 = 0xBCA // 3018 + SYS___FP_CAST_D = 0xBCB // 3019 + SYS_FREXPD32 = 0xBCC // 3020 + SYS_FREXPD64 = 0xBCD // 3021 + SYS_FREXPD128 = 0xBCE // 3022 + SYS_HYPOTD32 = 0xBCF // 3023 + SYS_HYPOTD64 = 0xBD0 // 3024 + SYS_HYPOTD128 = 0xBD1 // 3025 + SYS_ILOGBD32 = 0xBD2 // 3026 + SYS_ILOGBD64 = 0xBD3 // 3027 + SYS_ILOGBD128 = 0xBD4 // 3028 + SYS_LDEXPD32 = 0xBD5 // 3029 + SYS_LDEXPD64 = 0xBD6 // 3030 + SYS_LDEXPD128 = 0xBD7 // 3031 + SYS_LGAMMAD32 = 0xBD8 // 3032 + SYS_LGAMMAD64 = 0xBD9 // 3033 + SYS_LGAMMAD128 = 0xBDA // 3034 + SYS_LLRINTD32 = 0xBDB // 3035 + SYS_LLRINTD64 = 0xBDC // 3036 + SYS_LLRINTD128 = 0xBDD // 3037 + SYS_LLROUNDD32 = 0xBDE // 3038 + SYS_LLROUNDD64 = 0xBDF // 3039 + SYS_LLROUNDD128 = 0xBE0 // 3040 + SYS_LOGD32 = 0xBE1 // 3041 + SYS_LOGD64 = 0xBE2 // 3042 + SYS_LOGD128 = 0xBE3 // 3043 + SYS_LOG10D32 = 0xBE4 // 3044 + SYS_LOG10D64 = 0xBE5 // 3045 + SYS_LOG10D128 = 0xBE6 // 3046 + SYS_LOG1PD32 = 0xBE7 // 3047 + SYS_LOG1PD64 = 0xBE8 // 3048 + SYS_LOG1PD128 = 0xBE9 // 3049 + SYS_LOG2D32 = 0xBEA // 3050 + SYS_LOG2D64 = 0xBEB // 3051 + SYS_LOG2D128 = 0xBEC // 3052 + SYS_LOGBD32 = 0xBED // 3053 + SYS_LOGBD64 = 0xBEE // 3054 + SYS_LOGBD128 = 0xBEF // 3055 + SYS_LRINTD32 = 0xBF0 // 3056 + SYS_LRINTD64 = 0xBF1 // 3057 + SYS_LRINTD128 = 0xBF2 // 3058 + SYS_LROUNDD32 = 0xBF3 // 3059 + SYS_LROUNDD64 = 0xBF4 // 3060 + SYS_LROUNDD128 = 0xBF5 // 3061 + SYS_MODFD32 = 0xBF6 // 3062 + SYS_MODFD64 = 0xBF7 // 3063 + SYS_MODFD128 = 0xBF8 // 3064 + SYS_NAND32 = 0xBF9 // 3065 + SYS_NAND64 = 0xBFA // 3066 + SYS_NAND128 = 0xBFB // 3067 + SYS_NEARBYINTD32 = 0xBFC // 3068 + SYS_NEARBYINTD64 = 0xBFD // 3069 + SYS_NEARBYINTD128 = 0xBFE // 3070 + SYS_NEXTAFTERD32 = 0xBFF // 3071 + SYS_NEXTAFTERD64 = 0xC00 // 3072 + SYS_NEXTAFTERD128 = 0xC01 // 3073 + SYS_NEXTTOWARDD32 = 0xC02 // 3074 + SYS_NEXTTOWARDD64 = 0xC03 // 3075 + SYS_NEXTTOWARDD128 = 0xC04 // 3076 + SYS_POWD32 = 0xC05 // 3077 + SYS_POWD64 = 0xC06 // 3078 + SYS_POWD128 = 0xC07 // 3079 + SYS_QUANTIZED32 = 0xC08 // 3080 + SYS_QUANTIZED64 = 0xC09 // 3081 + SYS_QUANTIZED128 = 0xC0A // 3082 + SYS_REMAINDERD32 = 0xC0B // 3083 + SYS_REMAINDERD64 = 0xC0C // 3084 + SYS_REMAINDERD128 = 0xC0D // 3085 + SYS___REMQUOD32 = 0xC0E // 3086 + SYS___REMQUOD64 = 0xC0F // 3087 + SYS___REMQUOD128 = 0xC10 // 3088 + SYS_RINTD32 = 0xC11 // 3089 + SYS_RINTD64 = 0xC12 // 3090 + SYS_RINTD128 = 0xC13 // 3091 + SYS_ROUNDD32 = 0xC14 // 3092 + SYS_ROUNDD64 = 0xC15 // 3093 + SYS_ROUNDD128 = 0xC16 // 3094 + SYS_SAMEQUANTUMD32 = 0xC17 // 3095 + SYS_SAMEQUANTUMD64 = 0xC18 // 3096 + SYS_SAMEQUANTUMD128 = 0xC19 // 3097 + SYS_SCALBLND32 = 0xC1A // 3098 + SYS_SCALBLND64 = 0xC1B // 3099 + SYS_SCALBLND128 = 0xC1C // 3100 + SYS_SCALBND32 = 0xC1D // 3101 + SYS_SCALBND64 = 0xC1E // 3102 + SYS_SCALBND128 = 0xC1F // 3103 + SYS_SIND32 = 0xC20 // 3104 + SYS_SIND64 = 0xC21 // 3105 + SYS_SIND128 = 0xC22 // 3106 + SYS_SINHD32 = 0xC23 // 3107 + SYS_SINHD64 = 0xC24 // 3108 + SYS_SINHD128 = 0xC25 // 3109 + SYS_SQRTD32 = 0xC26 // 3110 + SYS_SQRTD64 = 0xC27 // 3111 + SYS_SQRTD128 = 0xC28 // 3112 + SYS_STRTOD32 = 0xC29 // 3113 + SYS_STRTOD64 = 0xC2A // 3114 + SYS_STRTOD128 = 0xC2B // 3115 + SYS_TAND32 = 0xC2C // 3116 + SYS_TAND64 = 0xC2D // 3117 + SYS_TAND128 = 0xC2E // 3118 + SYS_TANHD32 = 0xC2F // 3119 + SYS_TANHD64 = 0xC30 // 3120 + SYS_TANHD128 = 0xC31 // 3121 + SYS_TGAMMAD32 = 0xC32 // 3122 + SYS_TGAMMAD64 = 0xC33 // 3123 + SYS_TGAMMAD128 = 0xC34 // 3124 + SYS_TRUNCD32 = 0xC3E // 3134 + SYS_TRUNCD64 = 0xC3F // 3135 + SYS_TRUNCD128 = 0xC40 // 3136 + SYS_WCSTOD32 = 0xC41 // 3137 + SYS_WCSTOD64 = 0xC42 // 3138 + SYS_WCSTOD128 = 0xC43 // 3139 + SYS___CODEPAGE_INFO = 0xC64 // 3172 + SYS_POSIX_OPENPT = 0xC66 // 3174 + SYS_PSELECT = 0xC67 // 3175 + SYS_SOCKATMARK = 0xC68 // 3176 + SYS_AIO_FSYNC = 0xC69 // 3177 + SYS_LIO_LISTIO = 0xC6A // 3178 + SYS___ATANPID32 = 0xC6B // 3179 + SYS___ATANPID64 = 0xC6C // 3180 + SYS___ATANPID128 = 0xC6D // 3181 + SYS___COSPID32 = 0xC6E // 3182 + SYS___COSPID64 = 0xC6F // 3183 + SYS___COSPID128 = 0xC70 // 3184 + SYS___SINPID32 = 0xC71 // 3185 + SYS___SINPID64 = 0xC72 // 3186 + SYS___SINPID128 = 0xC73 // 3187 + SYS_SETIPV4SOURCEFILTER = 0xC76 // 3190 + SYS_GETIPV4SOURCEFILTER = 0xC77 // 3191 + SYS_SETSOURCEFILTER = 0xC78 // 3192 + SYS_GETSOURCEFILTER = 0xC79 // 3193 + SYS_FWRITE_UNLOCKED = 0xC7A // 3194 + SYS_FREAD_UNLOCKED = 0xC7B // 3195 + SYS_FGETS_UNLOCKED = 0xC7C // 3196 + SYS_GETS_UNLOCKED = 0xC7D // 3197 + SYS_FPUTS_UNLOCKED = 0xC7E // 3198 + SYS_PUTS_UNLOCKED = 0xC7F // 3199 + SYS_FGETC_UNLOCKED = 0xC80 // 3200 + SYS_FPUTC_UNLOCKED = 0xC81 // 3201 + SYS_DLADDR = 0xC82 // 3202 + SYS_SHM_OPEN = 0xC8C // 3212 + SYS_SHM_UNLINK = 0xC8D // 3213 + SYS___CLASS2F = 0xC91 // 3217 + SYS___CLASS2L = 0xC92 // 3218 + SYS___CLASS2F_B = 0xC93 // 3219 + SYS___CLASS2F_H = 0xC94 // 3220 + SYS___CLASS2L_B = 0xC95 // 3221 + SYS___CLASS2L_H = 0xC96 // 3222 + SYS___CLASS2D32 = 0xC97 // 3223 + SYS___CLASS2D64 = 0xC98 // 3224 + SYS___CLASS2D128 = 0xC99 // 3225 + SYS___TOCSNAME2 = 0xC9A // 3226 + SYS___D1TOP = 0xC9B // 3227 + SYS___D2TOP = 0xC9C // 3228 + SYS___D4TOP = 0xC9D // 3229 + SYS___PTOD1 = 0xC9E // 3230 + SYS___PTOD2 = 0xC9F // 3231 + SYS___PTOD4 = 0xCA0 // 3232 + SYS_CLEARERR_UNLOCKED = 0xCA1 // 3233 + SYS_FDELREC_UNLOCKED = 0xCA2 // 3234 + SYS_FEOF_UNLOCKED = 0xCA3 // 3235 + SYS_FERROR_UNLOCKED = 0xCA4 // 3236 + SYS_FFLUSH_UNLOCKED = 0xCA5 // 3237 + SYS_FGETPOS_UNLOCKED = 0xCA6 // 3238 + SYS_FGETWC_UNLOCKED = 0xCA7 // 3239 + SYS_FGETWS_UNLOCKED = 0xCA8 // 3240 + SYS_FILENO_UNLOCKED = 0xCA9 // 3241 + SYS_FLDATA_UNLOCKED = 0xCAA // 3242 + SYS_FLOCATE_UNLOCKED = 0xCAB // 3243 + SYS_FPRINTF_UNLOCKED = 0xCAC // 3244 + SYS_FPUTWC_UNLOCKED = 0xCAD // 3245 + SYS_FPUTWS_UNLOCKED = 0xCAE // 3246 + SYS_FSCANF_UNLOCKED = 0xCAF // 3247 + SYS_FSEEK_UNLOCKED = 0xCB0 // 3248 + SYS_FSEEKO_UNLOCKED = 0xCB1 // 3249 + SYS_FSETPOS_UNLOCKED = 0xCB3 // 3251 + SYS_FTELL_UNLOCKED = 0xCB4 // 3252 + SYS_FTELLO_UNLOCKED = 0xCB5 // 3253 + SYS_FUPDATE_UNLOCKED = 0xCB7 // 3255 + SYS_FWIDE_UNLOCKED = 0xCB8 // 3256 + SYS_FWPRINTF_UNLOCKED = 0xCB9 // 3257 + SYS_FWSCANF_UNLOCKED = 0xCBA // 3258 + SYS_GETWC_UNLOCKED = 0xCBB // 3259 + SYS_GETWCHAR_UNLOCKED = 0xCBC // 3260 + SYS_PERROR_UNLOCKED = 0xCBD // 3261 + SYS_PRINTF_UNLOCKED = 0xCBE // 3262 + SYS_PUTWC_UNLOCKED = 0xCBF // 3263 + SYS_PUTWCHAR_UNLOCKED = 0xCC0 // 3264 + SYS_REWIND_UNLOCKED = 0xCC1 // 3265 + SYS_SCANF_UNLOCKED = 0xCC2 // 3266 + SYS_UNGETC_UNLOCKED = 0xCC3 // 3267 + SYS_UNGETWC_UNLOCKED = 0xCC4 // 3268 + SYS_VFPRINTF_UNLOCKED = 0xCC5 // 3269 + SYS_VFSCANF_UNLOCKED = 0xCC7 // 3271 + SYS_VFWPRINTF_UNLOCKED = 0xCC9 // 3273 + SYS_VFWSCANF_UNLOCKED = 0xCCB // 3275 + SYS_VPRINTF_UNLOCKED = 0xCCD // 3277 + SYS_VSCANF_UNLOCKED = 0xCCF // 3279 + SYS_VWPRINTF_UNLOCKED = 0xCD1 // 3281 + SYS_VWSCANF_UNLOCKED = 0xCD3 // 3283 + SYS_WPRINTF_UNLOCKED = 0xCD5 // 3285 + SYS_WSCANF_UNLOCKED = 0xCD6 // 3286 + SYS_ASCTIME64 = 0xCD7 // 3287 + SYS_ASCTIME64_R = 0xCD8 // 3288 + SYS_CTIME64 = 0xCD9 // 3289 + SYS_CTIME64_R = 0xCDA // 3290 + SYS_DIFFTIME64 = 0xCDB // 3291 + SYS_GMTIME64 = 0xCDC // 3292 + SYS_GMTIME64_R = 0xCDD // 3293 + SYS_LOCALTIME64 = 0xCDE // 3294 + SYS_LOCALTIME64_R = 0xCDF // 3295 + SYS_MKTIME64 = 0xCE0 // 3296 + SYS_TIME64 = 0xCE1 // 3297 + SYS___LOGIN_APPLID = 0xCE2 // 3298 + SYS___PASSWD_APPLID = 0xCE3 // 3299 + SYS_PTHREAD_SECURITY_APPLID_NP = 0xCE4 // 3300 + SYS___GETTHENT = 0xCE5 // 3301 + SYS_FREEIFADDRS = 0xCE6 // 3302 + SYS_GETIFADDRS = 0xCE7 // 3303 + SYS_POSIX_FALLOCATE = 0xCE8 // 3304 + SYS_POSIX_MEMALIGN = 0xCE9 // 3305 + SYS_SIZEOF_ALLOC = 0xCEA // 3306 + SYS_RESIZE_ALLOC = 0xCEB // 3307 + SYS_FREAD_NOUPDATE = 0xCEC // 3308 + SYS_FREAD_NOUPDATE_UNLOCKED = 0xCED // 3309 + SYS_FGETPOS64 = 0xCEE // 3310 + SYS_FSEEK64 = 0xCEF // 3311 + SYS_FSEEKO64 = 0xCF0 // 3312 + SYS_FSETPOS64 = 0xCF1 // 3313 + SYS_FTELL64 = 0xCF2 // 3314 + SYS_FTELLO64 = 0xCF3 // 3315 + SYS_FGETPOS64_UNLOCKED = 0xCF4 // 3316 + SYS_FSEEK64_UNLOCKED = 0xCF5 // 3317 + SYS_FSEEKO64_UNLOCKED = 0xCF6 // 3318 + SYS_FSETPOS64_UNLOCKED = 0xCF7 // 3319 + SYS_FTELL64_UNLOCKED = 0xCF8 // 3320 + SYS_FTELLO64_UNLOCKED = 0xCF9 // 3321 + SYS_FOPEN_UNLOCKED = 0xCFA // 3322 + SYS_FREOPEN_UNLOCKED = 0xCFB // 3323 + SYS_FDOPEN_UNLOCKED = 0xCFC // 3324 + SYS_TMPFILE_UNLOCKED = 0xCFD // 3325 + SYS___MOSERVICES = 0xD3D // 3389 + SYS___GETTOD = 0xD3E // 3390 + SYS_C16RTOMB = 0xD40 // 3392 + SYS_C32RTOMB = 0xD41 // 3393 + SYS_MBRTOC16 = 0xD42 // 3394 + SYS_MBRTOC32 = 0xD43 // 3395 + SYS_QUANTEXPD32 = 0xD44 // 3396 + SYS_QUANTEXPD64 = 0xD45 // 3397 + SYS_QUANTEXPD128 = 0xD46 // 3398 + SYS___LOCALE_CTL = 0xD47 // 3399 + SYS___SMF_RECORD2 = 0xD48 // 3400 + SYS_FOPEN64 = 0xD49 // 3401 + SYS_FOPEN64_UNLOCKED = 0xD4A // 3402 + SYS_FREOPEN64 = 0xD4B // 3403 + SYS_FREOPEN64_UNLOCKED = 0xD4C // 3404 + SYS_TMPFILE64 = 0xD4D // 3405 + SYS_TMPFILE64_UNLOCKED = 0xD4E // 3406 + SYS_GETDATE64 = 0xD4F // 3407 + SYS_GETTIMEOFDAY64 = 0xD50 // 3408 + SYS_BIND2ADDRSEL = 0xD59 // 3417 + SYS_INET6_IS_SRCADDR = 0xD5A // 3418 + SYS___GETGRGID1 = 0xD5B // 3419 + SYS___GETGRNAM1 = 0xD5C // 3420 + SYS___FBUFSIZE = 0xD60 // 3424 + SYS___FPENDING = 0xD61 // 3425 + SYS___FLBF = 0xD62 // 3426 + SYS___FREADABLE = 0xD63 // 3427 + SYS___FWRITABLE = 0xD64 // 3428 + SYS___FREADING = 0xD65 // 3429 + SYS___FWRITING = 0xD66 // 3430 + SYS___FSETLOCKING = 0xD67 // 3431 + SYS__FLUSHLBF = 0xD68 // 3432 + SYS___FPURGE = 0xD69 // 3433 + SYS___FREADAHEAD = 0xD6A // 3434 + SYS___FSETERR = 0xD6B // 3435 + SYS___FPENDING_UNLOCKED = 0xD6C // 3436 + SYS___FREADING_UNLOCKED = 0xD6D // 3437 + SYS___FWRITING_UNLOCKED = 0xD6E // 3438 + SYS__FLUSHLBF_UNLOCKED = 0xD6F // 3439 + SYS___FPURGE_UNLOCKED = 0xD70 // 3440 + SYS___FREADAHEAD_UNLOCKED = 0xD71 // 3441 + SYS___LE_CEEGTJS = 0xD72 // 3442 + SYS___LE_RECORD_DUMP = 0xD73 // 3443 + SYS_FSTAT64 = 0xD74 // 3444 + SYS_LSTAT64 = 0xD75 // 3445 + SYS_STAT64 = 0xD76 // 3446 + SYS___READDIR2_64 = 0xD77 // 3447 + SYS___OPEN_STAT64 = 0xD78 // 3448 + SYS_FTW64 = 0xD79 // 3449 + SYS_NFTW64 = 0xD7A // 3450 + SYS_UTIME64 = 0xD7B // 3451 + SYS_UTIMES64 = 0xD7C // 3452 + SYS___GETIPC64 = 0xD7D // 3453 + SYS_MSGCTL64 = 0xD7E // 3454 + SYS_SEMCTL64 = 0xD7F // 3455 + SYS_SHMCTL64 = 0xD80 // 3456 + SYS_MSGXRCV64 = 0xD81 // 3457 + SYS___MGXR64 = 0xD81 // 3457 + SYS_W_GETPSENT64 = 0xD82 // 3458 + SYS_PTHREAD_COND_TIMEDWAIT64 = 0xD83 // 3459 + SYS_FTIME64 = 0xD85 // 3461 + SYS_GETUTXENT64 = 0xD86 // 3462 + SYS_GETUTXID64 = 0xD87 // 3463 + SYS_GETUTXLINE64 = 0xD88 // 3464 + SYS_PUTUTXLINE64 = 0xD89 // 3465 + SYS_NEWLOCALE = 0xD8A // 3466 + SYS_FREELOCALE = 0xD8B // 3467 + SYS_USELOCALE = 0xD8C // 3468 + SYS_DUPLOCALE = 0xD8D // 3469 + SYS___CHATTR64 = 0xD9C // 3484 + SYS___LCHATTR64 = 0xD9D // 3485 + SYS___FCHATTR64 = 0xD9E // 3486 + SYS_____CHATTR64_A = 0xD9F // 3487 + SYS_____LCHATTR64_A = 0xDA0 // 3488 + SYS___LE_CEEUSGD = 0xDA1 // 3489 + SYS___LE_IFAM_CON = 0xDA2 // 3490 + SYS___LE_IFAM_DSC = 0xDA3 // 3491 + SYS___LE_IFAM_GET = 0xDA4 // 3492 + SYS___LE_IFAM_QRY = 0xDA5 // 3493 + SYS_ALIGNED_ALLOC = 0xDA6 // 3494 + SYS_ACCEPT4 = 0xDA7 // 3495 + SYS___ACCEPT4_A = 0xDA8 // 3496 + SYS_COPYFILERANGE = 0xDA9 // 3497 + SYS_GETLINE = 0xDAA // 3498 + SYS___GETLINE_A = 0xDAB // 3499 + SYS_DIRFD = 0xDAC // 3500 + SYS_CLOCK_GETTIME = 0xDAD // 3501 + SYS_DUP3 = 0xDAE // 3502 + SYS_EPOLL_CREATE = 0xDAF // 3503 + SYS_EPOLL_CREATE1 = 0xDB0 // 3504 + SYS_EPOLL_CTL = 0xDB1 // 3505 + SYS_EPOLL_WAIT = 0xDB2 // 3506 + SYS_EPOLL_PWAIT = 0xDB3 // 3507 + SYS_EVENTFD = 0xDB4 // 3508 + SYS_STATFS = 0xDB5 // 3509 + SYS___STATFS_A = 0xDB6 // 3510 + SYS_FSTATFS = 0xDB7 // 3511 + SYS_INOTIFY_INIT = 0xDB8 // 3512 + SYS_INOTIFY_INIT1 = 0xDB9 // 3513 + SYS_INOTIFY_ADD_WATCH = 0xDBA // 3514 + SYS___INOTIFY_ADD_WATCH_A = 0xDBB // 3515 + SYS_INOTIFY_RM_WATCH = 0xDBC // 3516 + SYS_PIPE2 = 0xDBD // 3517 + SYS_PIVOT_ROOT = 0xDBE // 3518 + SYS___PIVOT_ROOT_A = 0xDBF // 3519 + SYS_PRCTL = 0xDC0 // 3520 + SYS_PRLIMIT = 0xDC1 // 3521 + SYS_SETHOSTNAME = 0xDC2 // 3522 + SYS___SETHOSTNAME_A = 0xDC3 // 3523 + SYS_SETRESUID = 0xDC4 // 3524 + SYS_SETRESGID = 0xDC5 // 3525 + SYS_PTHREAD_CONDATTR_GETCLOCK = 0xDC6 // 3526 + SYS_FLOCK = 0xDC7 // 3527 + SYS_FGETXATTR = 0xDC8 // 3528 + SYS___FGETXATTR_A = 0xDC9 // 3529 + SYS_FLISTXATTR = 0xDCA // 3530 + SYS___FLISTXATTR_A = 0xDCB // 3531 + SYS_FREMOVEXATTR = 0xDCC // 3532 + SYS___FREMOVEXATTR_A = 0xDCD // 3533 + SYS_FSETXATTR = 0xDCE // 3534 + SYS___FSETXATTR_A = 0xDCF // 3535 + SYS_GETXATTR = 0xDD0 // 3536 + SYS___GETXATTR_A = 0xDD1 // 3537 + SYS_LGETXATTR = 0xDD2 // 3538 + SYS___LGETXATTR_A = 0xDD3 // 3539 + SYS_LISTXATTR = 0xDD4 // 3540 + SYS___LISTXATTR_A = 0xDD5 // 3541 + SYS_LLISTXATTR = 0xDD6 // 3542 + SYS___LLISTXATTR_A = 0xDD7 // 3543 + SYS_LREMOVEXATTR = 0xDD8 // 3544 + SYS___LREMOVEXATTR_A = 0xDD9 // 3545 + SYS_LSETXATTR = 0xDDA // 3546 + SYS___LSETXATTR_A = 0xDDB // 3547 + SYS_REMOVEXATTR = 0xDDC // 3548 + SYS___REMOVEXATTR_A = 0xDDD // 3549 + SYS_SETXATTR = 0xDDE // 3550 + SYS___SETXATTR_A = 0xDDF // 3551 + SYS_FDATASYNC = 0xDE0 // 3552 + SYS_SYNCFS = 0xDE1 // 3553 + SYS_FUTIMES = 0xDE2 // 3554 + SYS_FUTIMESAT = 0xDE3 // 3555 + SYS___FUTIMESAT_A = 0xDE4 // 3556 + SYS_LUTIMES = 0xDE5 // 3557 + SYS___LUTIMES_A = 0xDE6 // 3558 + SYS_INET_ATON = 0xDE7 // 3559 + SYS_GETRANDOM = 0xDE8 // 3560 + SYS_GETTID = 0xDE9 // 3561 + SYS_MEMFD_CREATE = 0xDEA // 3562 + SYS___MEMFD_CREATE_A = 0xDEB // 3563 + SYS_FACCESSAT = 0xDEC // 3564 + SYS___FACCESSAT_A = 0xDED // 3565 + SYS_FCHMODAT = 0xDEE // 3566 + SYS___FCHMODAT_A = 0xDEF // 3567 + SYS_FCHOWNAT = 0xDF0 // 3568 + SYS___FCHOWNAT_A = 0xDF1 // 3569 + SYS_FSTATAT = 0xDF2 // 3570 + SYS___FSTATAT_A = 0xDF3 // 3571 + SYS_LINKAT = 0xDF4 // 3572 + SYS___LINKAT_A = 0xDF5 // 3573 + SYS_MKDIRAT = 0xDF6 // 3574 + SYS___MKDIRAT_A = 0xDF7 // 3575 + SYS_MKFIFOAT = 0xDF8 // 3576 + SYS___MKFIFOAT_A = 0xDF9 // 3577 + SYS_MKNODAT = 0xDFA // 3578 + SYS___MKNODAT_A = 0xDFB // 3579 + SYS_OPENAT = 0xDFC // 3580 + SYS___OPENAT_A = 0xDFD // 3581 + SYS_READLINKAT = 0xDFE // 3582 + SYS___READLINKAT_A = 0xDFF // 3583 + SYS_RENAMEAT = 0xE00 // 3584 + SYS___RENAMEAT_A = 0xE01 // 3585 + SYS_RENAMEAT2 = 0xE02 // 3586 + SYS___RENAMEAT2_A = 0xE03 // 3587 + SYS_SYMLINKAT = 0xE04 // 3588 + SYS___SYMLINKAT_A = 0xE05 // 3589 + SYS_UNLINKAT = 0xE06 // 3590 + SYS___UNLINKAT_A = 0xE07 // 3591 + SYS_SYSINFO = 0xE08 // 3592 + SYS_WAIT4 = 0xE0A // 3594 + SYS_CLONE = 0xE0B // 3595 + SYS_UNSHARE = 0xE0C // 3596 + SYS_SETNS = 0xE0D // 3597 + SYS_CAPGET = 0xE0E // 3598 + SYS_CAPSET = 0xE0F // 3599 + SYS_STRCHRNUL = 0xE10 // 3600 + SYS_PTHREAD_CONDATTR_SETCLOCK = 0xE12 // 3602 + SYS_OPEN_BY_HANDLE_AT = 0xE13 // 3603 + SYS___OPEN_BY_HANDLE_AT_A = 0xE14 // 3604 + SYS___INET_ATON_A = 0xE15 // 3605 + SYS_MOUNT1 = 0xE16 // 3606 + SYS___MOUNT1_A = 0xE17 // 3607 + SYS_UMOUNT1 = 0xE18 // 3608 + SYS___UMOUNT1_A = 0xE19 // 3609 + SYS_UMOUNT2 = 0xE1A // 3610 + SYS___UMOUNT2_A = 0xE1B // 3611 + SYS___PRCTL_A = 0xE1C // 3612 + SYS_LOCALTIME_R2 = 0xE1D // 3613 + SYS___LOCALTIME_R2_A = 0xE1E // 3614 + SYS_OPENAT2 = 0xE1F // 3615 + SYS___OPENAT2_A = 0xE20 // 3616 + SYS___LE_CEEMICT = 0xE21 // 3617 + SYS_GETENTROPY = 0xE22 // 3618 + SYS_NANOSLEEP = 0xE23 // 3619 + SYS_UTIMENSAT = 0xE24 // 3620 + SYS___UTIMENSAT_A = 0xE25 // 3621 + SYS_ASPRINTF = 0xE26 // 3622 + SYS___ASPRINTF_A = 0xE27 // 3623 + SYS_VASPRINTF = 0xE28 // 3624 + SYS___VASPRINTF_A = 0xE29 // 3625 + SYS_DPRINTF = 0xE2A // 3626 + SYS___DPRINTF_A = 0xE2B // 3627 + SYS_GETOPT_LONG = 0xE2C // 3628 + SYS___GETOPT_LONG_A = 0xE2D // 3629 + SYS_PSIGNAL = 0xE2E // 3630 + SYS___PSIGNAL_A = 0xE2F // 3631 + SYS_PSIGNAL_UNLOCKED = 0xE30 // 3632 + SYS___PSIGNAL_UNLOCKED_A = 0xE31 // 3633 + SYS_FSTATAT_O = 0xE32 // 3634 + SYS___FSTATAT_O_A = 0xE33 // 3635 + SYS_FSTATAT64 = 0xE34 // 3636 + SYS___FSTATAT64_A = 0xE35 // 3637 + SYS___CHATTRAT = 0xE36 // 3638 + SYS_____CHATTRAT_A = 0xE37 // 3639 + SYS___CHATTRAT64 = 0xE38 // 3640 + SYS_____CHATTRAT64_A = 0xE39 // 3641 + SYS_MADVISE = 0xE3A // 3642 + SYS___AUTHENTICATE = 0xE3B // 3643 + ) diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux.go b/vendor/golang.org/x/sys/unix/ztypes_linux.go index eff6bcdef..4740b8348 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux.go @@ -1178,7 +1178,8 @@ const ( PERF_SAMPLE_BRANCH_TYPE_SAVE_SHIFT = 0x10 PERF_SAMPLE_BRANCH_HW_INDEX_SHIFT = 0x11 PERF_SAMPLE_BRANCH_PRIV_SAVE_SHIFT = 0x12 - PERF_SAMPLE_BRANCH_MAX_SHIFT = 0x13 + PERF_SAMPLE_BRANCH_COUNTERS = 0x80000 + PERF_SAMPLE_BRANCH_MAX_SHIFT = 0x14 PERF_SAMPLE_BRANCH_USER = 0x1 PERF_SAMPLE_BRANCH_KERNEL = 0x2 PERF_SAMPLE_BRANCH_HV = 0x4 @@ -1198,7 +1199,7 @@ const ( PERF_SAMPLE_BRANCH_TYPE_SAVE = 0x10000 PERF_SAMPLE_BRANCH_HW_INDEX = 0x20000 PERF_SAMPLE_BRANCH_PRIV_SAVE = 0x40000 - PERF_SAMPLE_BRANCH_MAX = 0x80000 + PERF_SAMPLE_BRANCH_MAX = 0x100000 PERF_BR_UNKNOWN = 0x0 PERF_BR_COND = 0x1 PERF_BR_UNCOND = 0x2 @@ -2481,6 +2482,15 @@ type XDPMmapOffsets struct { Cr XDPRingOffset } +type XDPUmemReg struct { + Addr uint64 + Len uint64 + Chunk_size uint32 + Headroom uint32 + Flags uint32 + Tx_metadata_len uint32 +} + type XDPStatistics struct { Rx_dropped uint64 Rx_invalid_descs uint64 @@ -2935,7 +2945,7 @@ const ( BPF_TCP_LISTEN = 0xa BPF_TCP_CLOSING = 0xb BPF_TCP_NEW_SYN_RECV = 0xc - BPF_TCP_MAX_STATES = 0xd + BPF_TCP_MAX_STATES = 0xe TCP_BPF_IW = 0x3e9 TCP_BPF_SNDCWND_CLAMP = 0x3ea TCP_BPF_DELACK_MAX = 0x3eb @@ -3211,7 +3221,7 @@ const ( DEVLINK_CMD_LINECARD_NEW = 0x50 DEVLINK_CMD_LINECARD_DEL = 0x51 DEVLINK_CMD_SELFTESTS_GET = 0x52 - DEVLINK_CMD_MAX = 0x53 + DEVLINK_CMD_MAX = 0x54 DEVLINK_PORT_TYPE_NOTSET = 0x0 DEVLINK_PORT_TYPE_AUTO = 0x1 DEVLINK_PORT_TYPE_ETH = 0x2 @@ -4595,7 +4605,7 @@ const ( NL80211_ATTR_MAC_HINT = 0xc8 NL80211_ATTR_MAC_MASK = 0xd7 NL80211_ATTR_MAX_AP_ASSOC_STA = 0xca - NL80211_ATTR_MAX = 0x146 + NL80211_ATTR_MAX = 0x14a NL80211_ATTR_MAX_CRIT_PROT_DURATION = 0xb4 NL80211_ATTR_MAX_CSA_COUNTERS = 0xce NL80211_ATTR_MAX_MATCH_SETS = 0x85 @@ -4861,7 +4871,7 @@ const ( NL80211_BSS_FREQUENCY_OFFSET = 0x14 NL80211_BSS_INFORMATION_ELEMENTS = 0x6 NL80211_BSS_LAST_SEEN_BOOTTIME = 0xf - NL80211_BSS_MAX = 0x16 + NL80211_BSS_MAX = 0x18 NL80211_BSS_MLD_ADDR = 0x16 NL80211_BSS_MLO_LINK_ID = 0x15 NL80211_BSS_PAD = 0x10 @@ -4965,7 +4975,7 @@ const ( NL80211_CMD_LEAVE_IBSS = 0x2c NL80211_CMD_LEAVE_MESH = 0x45 NL80211_CMD_LEAVE_OCB = 0x6d - NL80211_CMD_MAX = 0x9a + NL80211_CMD_MAX = 0x9b NL80211_CMD_MICHAEL_MIC_FAILURE = 0x29 NL80211_CMD_MODIFY_LINK_STA = 0x97 NL80211_CMD_NAN_MATCH = 0x78 @@ -5199,7 +5209,7 @@ const ( NL80211_FREQUENCY_ATTR_GO_CONCURRENT = 0xf NL80211_FREQUENCY_ATTR_INDOOR_ONLY = 0xe NL80211_FREQUENCY_ATTR_IR_CONCURRENT = 0xf - NL80211_FREQUENCY_ATTR_MAX = 0x1c + NL80211_FREQUENCY_ATTR_MAX = 0x20 NL80211_FREQUENCY_ATTR_MAX_TX_POWER = 0x6 NL80211_FREQUENCY_ATTR_NO_10MHZ = 0x11 NL80211_FREQUENCY_ATTR_NO_160MHZ = 0xc @@ -5693,7 +5703,7 @@ const ( NL80211_STA_FLAG_ASSOCIATED = 0x7 NL80211_STA_FLAG_AUTHENTICATED = 0x5 NL80211_STA_FLAG_AUTHORIZED = 0x1 - NL80211_STA_FLAG_MAX = 0x7 + NL80211_STA_FLAG_MAX = 0x8 NL80211_STA_FLAG_MAX_OLD_API = 0x6 NL80211_STA_FLAG_MFP = 0x4 NL80211_STA_FLAG_SHORT_PREAMBLE = 0x2 @@ -5991,3 +6001,34 @@ type CachestatRange struct { Off uint64 Len uint64 } + +const ( + SK_MEMINFO_RMEM_ALLOC = 0x0 + SK_MEMINFO_RCVBUF = 0x1 + SK_MEMINFO_WMEM_ALLOC = 0x2 + SK_MEMINFO_SNDBUF = 0x3 + SK_MEMINFO_FWD_ALLOC = 0x4 + SK_MEMINFO_WMEM_QUEUED = 0x5 + SK_MEMINFO_OPTMEM = 0x6 + SK_MEMINFO_BACKLOG = 0x7 + SK_MEMINFO_DROPS = 0x8 + SK_MEMINFO_VARS = 0x9 + SKNLGRP_NONE = 0x0 + SKNLGRP_INET_TCP_DESTROY = 0x1 + SKNLGRP_INET_UDP_DESTROY = 0x2 + SKNLGRP_INET6_TCP_DESTROY = 0x3 + SKNLGRP_INET6_UDP_DESTROY = 0x4 + SK_DIAG_BPF_STORAGE_REQ_NONE = 0x0 + SK_DIAG_BPF_STORAGE_REQ_MAP_FD = 0x1 + SK_DIAG_BPF_STORAGE_REP_NONE = 0x0 + SK_DIAG_BPF_STORAGE = 0x1 + SK_DIAG_BPF_STORAGE_NONE = 0x0 + SK_DIAG_BPF_STORAGE_PAD = 0x1 + SK_DIAG_BPF_STORAGE_MAP_ID = 0x2 + SK_DIAG_BPF_STORAGE_MAP_VALUE = 0x3 +) + +type SockDiagReq struct { + Family uint8 + Protocol uint8 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_386.go b/vendor/golang.org/x/sys/unix/ztypes_linux_386.go index 438a30aff..fd402da43 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_386.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_386.go @@ -477,14 +477,6 @@ const ( BLKPG = 0x1269 ) -type XDPUmemReg struct { - Addr uint64 - Len uint64 - Size uint32 - Headroom uint32 - Flags uint32 -} - type CryptoUserAlg struct { Name [64]int8 Driver_name [64]int8 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go index adceca355..eb7a5e186 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go @@ -492,15 +492,6 @@ const ( BLKPG = 0x1269 ) -type XDPUmemReg struct { - Addr uint64 - Len uint64 - Size uint32 - Headroom uint32 - Flags uint32 - _ [4]byte -} - type CryptoUserAlg struct { Name [64]int8 Driver_name [64]int8 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go b/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go index eeaa00a37..d78ac108b 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go @@ -470,15 +470,6 @@ const ( BLKPG = 0x1269 ) -type XDPUmemReg struct { - Addr uint64 - Len uint64 - Size uint32 - Headroom uint32 - Flags uint32 - _ [4]byte -} - type CryptoUserAlg struct { Name [64]uint8 Driver_name [64]uint8 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go index 6739aa91d..cd06d47f1 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go @@ -471,15 +471,6 @@ const ( BLKPG = 0x1269 ) -type XDPUmemReg struct { - Addr uint64 - Len uint64 - Size uint32 - Headroom uint32 - Flags uint32 - _ [4]byte -} - type CryptoUserAlg struct { Name [64]int8 Driver_name [64]int8 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_loong64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_loong64.go index 9920ef631..2f28fe26c 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_loong64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_loong64.go @@ -472,15 +472,6 @@ const ( BLKPG = 0x1269 ) -type XDPUmemReg struct { - Addr uint64 - Len uint64 - Size uint32 - Headroom uint32 - Flags uint32 - _ [4]byte -} - type CryptoUserAlg struct { Name [64]int8 Driver_name [64]int8 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go index 2923b799a..71d6cac2f 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go @@ -476,15 +476,6 @@ const ( BLKPG = 0x20001269 ) -type XDPUmemReg struct { - Addr uint64 - Len uint64 - Size uint32 - Headroom uint32 - Flags uint32 - _ [4]byte -} - type CryptoUserAlg struct { Name [64]int8 Driver_name [64]int8 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go index ce2750ee4..8596d4535 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go @@ -474,15 +474,6 @@ const ( BLKPG = 0x20001269 ) -type XDPUmemReg struct { - Addr uint64 - Len uint64 - Size uint32 - Headroom uint32 - Flags uint32 - _ [4]byte -} - type CryptoUserAlg struct { Name [64]int8 Driver_name [64]int8 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go index 3038811d7..cd60ea186 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go @@ -474,15 +474,6 @@ const ( BLKPG = 0x20001269 ) -type XDPUmemReg struct { - Addr uint64 - Len uint64 - Size uint32 - Headroom uint32 - Flags uint32 - _ [4]byte -} - type CryptoUserAlg struct { Name [64]int8 Driver_name [64]int8 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go index efc6fed18..b0ae420c4 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go @@ -476,15 +476,6 @@ const ( BLKPG = 0x20001269 ) -type XDPUmemReg struct { - Addr uint64 - Len uint64 - Size uint32 - Headroom uint32 - Flags uint32 - _ [4]byte -} - type CryptoUserAlg struct { Name [64]int8 Driver_name [64]int8 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc.go b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc.go index 9a654b75a..835972875 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc.go @@ -482,15 +482,6 @@ const ( BLKPG = 0x20001269 ) -type XDPUmemReg struct { - Addr uint64 - Len uint64 - Size uint32 - Headroom uint32 - Flags uint32 - _ [4]byte -} - type CryptoUserAlg struct { Name [64]uint8 Driver_name [64]uint8 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go index 40d358e33..69eb6a5c6 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go @@ -481,15 +481,6 @@ const ( BLKPG = 0x20001269 ) -type XDPUmemReg struct { - Addr uint64 - Len uint64 - Size uint32 - Headroom uint32 - Flags uint32 - _ [4]byte -} - type CryptoUserAlg struct { Name [64]uint8 Driver_name [64]uint8 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go index 148c6ceb8..5f583cb62 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go @@ -481,15 +481,6 @@ const ( BLKPG = 0x20001269 ) -type XDPUmemReg struct { - Addr uint64 - Len uint64 - Size uint32 - Headroom uint32 - Flags uint32 - _ [4]byte -} - type CryptoUserAlg struct { Name [64]uint8 Driver_name [64]uint8 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go index 72ba81543..15adc0414 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go @@ -499,15 +499,6 @@ const ( BLKPG = 0x1269 ) -type XDPUmemReg struct { - Addr uint64 - Len uint64 - Size uint32 - Headroom uint32 - Flags uint32 - _ [4]byte -} - type CryptoUserAlg struct { Name [64]uint8 Driver_name [64]uint8 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go b/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go index 71e765508..cf3ce9003 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go @@ -495,15 +495,6 @@ const ( BLKPG = 0x1269 ) -type XDPUmemReg struct { - Addr uint64 - Len uint64 - Size uint32 - Headroom uint32 - Flags uint32 - _ [4]byte -} - type CryptoUserAlg struct { Name [64]int8 Driver_name [64]int8 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go index 4abbdb9de..590b56739 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go @@ -476,15 +476,6 @@ const ( BLKPG = 0x20001269 ) -type XDPUmemReg struct { - Addr uint64 - Len uint64 - Size uint32 - Headroom uint32 - Flags uint32 - _ [4]byte -} - type CryptoUserAlg struct { Name [64]int8 Driver_name [64]int8 diff --git a/vendor/golang.org/x/sys/unix/ztypes_zos_s390x.go b/vendor/golang.org/x/sys/unix/ztypes_zos_s390x.go index 54f31be63..d9a13af46 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_zos_s390x.go +++ b/vendor/golang.org/x/sys/unix/ztypes_zos_s390x.go @@ -25,10 +25,13 @@ const ( SizeofIPv6Mreq = 20 SizeofICMPv6Filter = 32 SizeofIPv6MTUInfo = 32 + SizeofInet4Pktinfo = 8 + SizeofInet6Pktinfo = 20 SizeofLinger = 8 SizeofSockaddrInet4 = 16 SizeofSockaddrInet6 = 28 SizeofTCPInfo = 0x68 + SizeofUcred = 12 ) type ( @@ -69,12 +72,17 @@ type Utimbuf struct { } type Utsname struct { - Sysname [65]byte - Nodename [65]byte - Release [65]byte - Version [65]byte - Machine [65]byte - Domainname [65]byte + Sysname [16]byte + Nodename [32]byte + Release [8]byte + Version [8]byte + Machine [16]byte +} + +type Ucred struct { + Pid int32 + Uid uint32 + Gid uint32 } type RawSockaddrInet4 struct { @@ -325,7 +333,7 @@ type Statvfs_t struct { } type Statfs_t struct { - Type uint32 + Type uint64 Bsize uint64 Blocks uint64 Bfree uint64 @@ -336,6 +344,7 @@ type Statfs_t struct { Namelen uint64 Frsize uint64 Flags uint64 + _ [4]uint64 } type direntLE struct { @@ -412,3 +421,126 @@ type W_Mntent struct { Quiesceowner [8]byte _ [38]byte } + +type EpollEvent struct { + Events uint32 + _ int32 + Fd int32 + Pad int32 +} + +type InotifyEvent struct { + Wd int32 + Mask uint32 + Cookie uint32 + Len uint32 + Name string +} + +const ( + SizeofInotifyEvent = 0x10 +) + +type ConsMsg2 struct { + Cm2Format uint16 + Cm2R1 uint16 + Cm2Msglength uint32 + Cm2Msg *byte + Cm2R2 [4]byte + Cm2R3 [4]byte + Cm2Routcde *uint32 + Cm2Descr *uint32 + Cm2Msgflag uint32 + Cm2Token uint32 + Cm2Msgid *uint32 + Cm2R4 [4]byte + Cm2DomToken uint32 + Cm2DomMsgid *uint32 + Cm2ModCartptr *byte + Cm2ModConsidptr *byte + Cm2MsgCart [8]byte + Cm2MsgConsid [4]byte + Cm2R5 [12]byte +} + +const ( + CC_modify = 1 + CC_stop = 2 + CONSOLE_FORMAT_2 = 2 + CONSOLE_FORMAT_3 = 3 + CONSOLE_HRDCPY = 0x80000000 +) + +type OpenHow struct { + Flags uint64 + Mode uint64 + Resolve uint64 +} + +const SizeofOpenHow = 0x18 + +const ( + RESOLVE_CACHED = 0x20 + RESOLVE_BENEATH = 0x8 + RESOLVE_IN_ROOT = 0x10 + RESOLVE_NO_MAGICLINKS = 0x2 + RESOLVE_NO_SYMLINKS = 0x4 + RESOLVE_NO_XDEV = 0x1 +) + +type Siginfo struct { + Signo int32 + Errno int32 + Code int32 + Pid int32 + Uid uint32 + _ [44]byte +} + +type SysvIpcPerm struct { + Uid uint32 + Gid uint32 + Cuid uint32 + Cgid uint32 + Mode int32 +} + +type SysvShmDesc struct { + Perm SysvIpcPerm + _ [4]byte + Lpid int32 + Cpid int32 + Nattch uint32 + _ [4]byte + _ [4]byte + _ [4]byte + _ int32 + _ uint8 + _ uint8 + _ uint16 + _ *byte + Segsz uint64 + Atime Time_t + Dtime Time_t + Ctime Time_t +} + +type SysvShmDesc64 struct { + Perm SysvIpcPerm + _ [4]byte + Lpid int32 + Cpid int32 + Nattch uint32 + _ [4]byte + _ [4]byte + _ [4]byte + _ int32 + _ byte + _ uint8 + _ uint16 + _ *byte + Segsz uint64 + Atime int64 + Dtime int64 + Ctime int64 +} diff --git a/vendor/golang.org/x/sys/windows/aliases.go b/vendor/golang.org/x/sys/windows/aliases.go index ce2d713d6..16f90560a 100644 --- a/vendor/golang.org/x/sys/windows/aliases.go +++ b/vendor/golang.org/x/sys/windows/aliases.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -//go:build windows && go1.9 +//go:build windows package windows diff --git a/vendor/golang.org/x/sys/windows/empty.s b/vendor/golang.org/x/sys/windows/empty.s deleted file mode 100644 index ba64caca5..000000000 --- a/vendor/golang.org/x/sys/windows/empty.s +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -//go:build !go1.12 - -// This file is here to allow bodyless functions with go:linkname for Go 1.11 -// and earlier (see https://golang.org/issue/23311). diff --git a/vendor/golang.org/x/sys/windows/security_windows.go b/vendor/golang.org/x/sys/windows/security_windows.go index 26be94a8a..6f7d2ac70 100644 --- a/vendor/golang.org/x/sys/windows/security_windows.go +++ b/vendor/golang.org/x/sys/windows/security_windows.go @@ -68,6 +68,7 @@ type UserInfo10 struct { //sys NetUserGetInfo(serverName *uint16, userName *uint16, level uint32, buf **byte) (neterr error) = netapi32.NetUserGetInfo //sys NetGetJoinInformation(server *uint16, name **uint16, bufType *uint32) (neterr error) = netapi32.NetGetJoinInformation //sys NetApiBufferFree(buf *byte) (neterr error) = netapi32.NetApiBufferFree +//sys NetUserEnum(serverName *uint16, level uint32, filter uint32, buf **byte, prefMaxLen uint32, entriesRead *uint32, totalEntries *uint32, resumeHandle *uint32) (neterr error) = netapi32.NetUserEnum const ( // do not reorder diff --git a/vendor/golang.org/x/sys/windows/syscall_windows.go b/vendor/golang.org/x/sys/windows/syscall_windows.go index 6395a031d..6525c62f3 100644 --- a/vendor/golang.org/x/sys/windows/syscall_windows.go +++ b/vendor/golang.org/x/sys/windows/syscall_windows.go @@ -165,6 +165,7 @@ func NewCallbackCDecl(fn interface{}) uintptr { //sys CreateFile(name *uint16, access uint32, mode uint32, sa *SecurityAttributes, createmode uint32, attrs uint32, templatefile Handle) (handle Handle, err error) [failretval==InvalidHandle] = CreateFileW //sys CreateNamedPipe(name *uint16, flags uint32, pipeMode uint32, maxInstances uint32, outSize uint32, inSize uint32, defaultTimeout uint32, sa *SecurityAttributes) (handle Handle, err error) [failretval==InvalidHandle] = CreateNamedPipeW //sys ConnectNamedPipe(pipe Handle, overlapped *Overlapped) (err error) +//sys DisconnectNamedPipe(pipe Handle) (err error) //sys GetNamedPipeInfo(pipe Handle, flags *uint32, outSize *uint32, inSize *uint32, maxInstances *uint32) (err error) //sys GetNamedPipeHandleState(pipe Handle, state *uint32, curInstances *uint32, maxCollectionCount *uint32, collectDataTimeout *uint32, userName *uint16, maxUserNameSize uint32) (err error) = GetNamedPipeHandleStateW //sys SetNamedPipeHandleState(pipe Handle, state *uint32, maxCollectionCount *uint32, collectDataTimeout *uint32) (err error) = SetNamedPipeHandleState @@ -348,8 +349,19 @@ func NewCallbackCDecl(fn interface{}) uintptr { //sys SetProcessPriorityBoost(process Handle, disable bool) (err error) = kernel32.SetProcessPriorityBoost //sys GetProcessWorkingSetSizeEx(hProcess Handle, lpMinimumWorkingSetSize *uintptr, lpMaximumWorkingSetSize *uintptr, flags *uint32) //sys SetProcessWorkingSetSizeEx(hProcess Handle, dwMinimumWorkingSetSize uintptr, dwMaximumWorkingSetSize uintptr, flags uint32) (err error) +//sys ClearCommBreak(handle Handle) (err error) +//sys ClearCommError(handle Handle, lpErrors *uint32, lpStat *ComStat) (err error) +//sys EscapeCommFunction(handle Handle, dwFunc uint32) (err error) +//sys GetCommState(handle Handle, lpDCB *DCB) (err error) +//sys GetCommModemStatus(handle Handle, lpModemStat *uint32) (err error) //sys GetCommTimeouts(handle Handle, timeouts *CommTimeouts) (err error) +//sys PurgeComm(handle Handle, dwFlags uint32) (err error) +//sys SetCommBreak(handle Handle) (err error) +//sys SetCommMask(handle Handle, dwEvtMask uint32) (err error) +//sys SetCommState(handle Handle, lpDCB *DCB) (err error) //sys SetCommTimeouts(handle Handle, timeouts *CommTimeouts) (err error) +//sys SetupComm(handle Handle, dwInQueue uint32, dwOutQueue uint32) (err error) +//sys WaitCommEvent(handle Handle, lpEvtMask *uint32, lpOverlapped *Overlapped) (err error) //sys GetActiveProcessorCount(groupNumber uint16) (ret uint32) //sys GetMaximumProcessorCount(groupNumber uint16) (ret uint32) //sys EnumWindows(enumFunc uintptr, param unsafe.Pointer) (err error) = user32.EnumWindows @@ -1834,3 +1846,73 @@ func ResizePseudoConsole(pconsole Handle, size Coord) error { // accept arguments that can be casted to uintptr, and Coord can't. return resizePseudoConsole(pconsole, *((*uint32)(unsafe.Pointer(&size)))) } + +// DCB constants. See https://learn.microsoft.com/en-us/windows/win32/api/winbase/ns-winbase-dcb. +const ( + CBR_110 = 110 + CBR_300 = 300 + CBR_600 = 600 + CBR_1200 = 1200 + CBR_2400 = 2400 + CBR_4800 = 4800 + CBR_9600 = 9600 + CBR_14400 = 14400 + CBR_19200 = 19200 + CBR_38400 = 38400 + CBR_57600 = 57600 + CBR_115200 = 115200 + CBR_128000 = 128000 + CBR_256000 = 256000 + + DTR_CONTROL_DISABLE = 0x00000000 + DTR_CONTROL_ENABLE = 0x00000010 + DTR_CONTROL_HANDSHAKE = 0x00000020 + + RTS_CONTROL_DISABLE = 0x00000000 + RTS_CONTROL_ENABLE = 0x00001000 + RTS_CONTROL_HANDSHAKE = 0x00002000 + RTS_CONTROL_TOGGLE = 0x00003000 + + NOPARITY = 0 + ODDPARITY = 1 + EVENPARITY = 2 + MARKPARITY = 3 + SPACEPARITY = 4 + + ONESTOPBIT = 0 + ONE5STOPBITS = 1 + TWOSTOPBITS = 2 +) + +// EscapeCommFunction constants. See https://learn.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-escapecommfunction. +const ( + SETXOFF = 1 + SETXON = 2 + SETRTS = 3 + CLRRTS = 4 + SETDTR = 5 + CLRDTR = 6 + SETBREAK = 8 + CLRBREAK = 9 +) + +// PurgeComm constants. See https://learn.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-purgecomm. +const ( + PURGE_TXABORT = 0x0001 + PURGE_RXABORT = 0x0002 + PURGE_TXCLEAR = 0x0004 + PURGE_RXCLEAR = 0x0008 +) + +// SetCommMask constants. See https://learn.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-setcommmask. +const ( + EV_RXCHAR = 0x0001 + EV_RXFLAG = 0x0002 + EV_TXEMPTY = 0x0004 + EV_CTS = 0x0008 + EV_DSR = 0x0010 + EV_RLSD = 0x0020 + EV_BREAK = 0x0040 + EV_ERR = 0x0080 + EV_RING = 0x0100 +) diff --git a/vendor/golang.org/x/sys/windows/types_windows.go b/vendor/golang.org/x/sys/windows/types_windows.go index 359780f6a..d8cb71db0 100644 --- a/vendor/golang.org/x/sys/windows/types_windows.go +++ b/vendor/golang.org/x/sys/windows/types_windows.go @@ -3380,3 +3380,27 @@ type BLOB struct { Size uint32 BlobData *byte } + +type ComStat struct { + Flags uint32 + CBInQue uint32 + CBOutQue uint32 +} + +type DCB struct { + DCBlength uint32 + BaudRate uint32 + Flags uint32 + wReserved uint16 + XonLim uint16 + XoffLim uint16 + ByteSize uint8 + Parity uint8 + StopBits uint8 + XonChar byte + XoffChar byte + ErrorChar byte + EofChar byte + EvtChar byte + wReserved1 uint16 +} diff --git a/vendor/golang.org/x/sys/windows/zsyscall_windows.go b/vendor/golang.org/x/sys/windows/zsyscall_windows.go index e8791c82c..9f73df75b 100644 --- a/vendor/golang.org/x/sys/windows/zsyscall_windows.go +++ b/vendor/golang.org/x/sys/windows/zsyscall_windows.go @@ -188,6 +188,8 @@ var ( procAssignProcessToJobObject = modkernel32.NewProc("AssignProcessToJobObject") procCancelIo = modkernel32.NewProc("CancelIo") procCancelIoEx = modkernel32.NewProc("CancelIoEx") + procClearCommBreak = modkernel32.NewProc("ClearCommBreak") + procClearCommError = modkernel32.NewProc("ClearCommError") procCloseHandle = modkernel32.NewProc("CloseHandle") procClosePseudoConsole = modkernel32.NewProc("ClosePseudoConsole") procConnectNamedPipe = modkernel32.NewProc("ConnectNamedPipe") @@ -212,7 +214,9 @@ var ( procDeleteProcThreadAttributeList = modkernel32.NewProc("DeleteProcThreadAttributeList") procDeleteVolumeMountPointW = modkernel32.NewProc("DeleteVolumeMountPointW") procDeviceIoControl = modkernel32.NewProc("DeviceIoControl") + procDisconnectNamedPipe = modkernel32.NewProc("DisconnectNamedPipe") procDuplicateHandle = modkernel32.NewProc("DuplicateHandle") + procEscapeCommFunction = modkernel32.NewProc("EscapeCommFunction") procExitProcess = modkernel32.NewProc("ExitProcess") procExpandEnvironmentStringsW = modkernel32.NewProc("ExpandEnvironmentStringsW") procFindClose = modkernel32.NewProc("FindClose") @@ -236,6 +240,8 @@ var ( procGenerateConsoleCtrlEvent = modkernel32.NewProc("GenerateConsoleCtrlEvent") procGetACP = modkernel32.NewProc("GetACP") procGetActiveProcessorCount = modkernel32.NewProc("GetActiveProcessorCount") + procGetCommModemStatus = modkernel32.NewProc("GetCommModemStatus") + procGetCommState = modkernel32.NewProc("GetCommState") procGetCommTimeouts = modkernel32.NewProc("GetCommTimeouts") procGetCommandLineW = modkernel32.NewProc("GetCommandLineW") procGetComputerNameExW = modkernel32.NewProc("GetComputerNameExW") @@ -322,6 +328,7 @@ var ( procProcess32NextW = modkernel32.NewProc("Process32NextW") procProcessIdToSessionId = modkernel32.NewProc("ProcessIdToSessionId") procPulseEvent = modkernel32.NewProc("PulseEvent") + procPurgeComm = modkernel32.NewProc("PurgeComm") procQueryDosDeviceW = modkernel32.NewProc("QueryDosDeviceW") procQueryFullProcessImageNameW = modkernel32.NewProc("QueryFullProcessImageNameW") procQueryInformationJobObject = modkernel32.NewProc("QueryInformationJobObject") @@ -335,6 +342,9 @@ var ( procResetEvent = modkernel32.NewProc("ResetEvent") procResizePseudoConsole = modkernel32.NewProc("ResizePseudoConsole") procResumeThread = modkernel32.NewProc("ResumeThread") + procSetCommBreak = modkernel32.NewProc("SetCommBreak") + procSetCommMask = modkernel32.NewProc("SetCommMask") + procSetCommState = modkernel32.NewProc("SetCommState") procSetCommTimeouts = modkernel32.NewProc("SetCommTimeouts") procSetConsoleCursorPosition = modkernel32.NewProc("SetConsoleCursorPosition") procSetConsoleMode = modkernel32.NewProc("SetConsoleMode") @@ -342,7 +352,6 @@ var ( procSetDefaultDllDirectories = modkernel32.NewProc("SetDefaultDllDirectories") procSetDllDirectoryW = modkernel32.NewProc("SetDllDirectoryW") procSetEndOfFile = modkernel32.NewProc("SetEndOfFile") - procSetFileValidData = modkernel32.NewProc("SetFileValidData") procSetEnvironmentVariableW = modkernel32.NewProc("SetEnvironmentVariableW") procSetErrorMode = modkernel32.NewProc("SetErrorMode") procSetEvent = modkernel32.NewProc("SetEvent") @@ -351,6 +360,7 @@ var ( procSetFileInformationByHandle = modkernel32.NewProc("SetFileInformationByHandle") procSetFilePointer = modkernel32.NewProc("SetFilePointer") procSetFileTime = modkernel32.NewProc("SetFileTime") + procSetFileValidData = modkernel32.NewProc("SetFileValidData") procSetHandleInformation = modkernel32.NewProc("SetHandleInformation") procSetInformationJobObject = modkernel32.NewProc("SetInformationJobObject") procSetNamedPipeHandleState = modkernel32.NewProc("SetNamedPipeHandleState") @@ -361,6 +371,7 @@ var ( procSetStdHandle = modkernel32.NewProc("SetStdHandle") procSetVolumeLabelW = modkernel32.NewProc("SetVolumeLabelW") procSetVolumeMountPointW = modkernel32.NewProc("SetVolumeMountPointW") + procSetupComm = modkernel32.NewProc("SetupComm") procSizeofResource = modkernel32.NewProc("SizeofResource") procSleepEx = modkernel32.NewProc("SleepEx") procTerminateJobObject = modkernel32.NewProc("TerminateJobObject") @@ -379,6 +390,7 @@ var ( procVirtualQueryEx = modkernel32.NewProc("VirtualQueryEx") procVirtualUnlock = modkernel32.NewProc("VirtualUnlock") procWTSGetActiveConsoleSessionId = modkernel32.NewProc("WTSGetActiveConsoleSessionId") + procWaitCommEvent = modkernel32.NewProc("WaitCommEvent") procWaitForMultipleObjects = modkernel32.NewProc("WaitForMultipleObjects") procWaitForSingleObject = modkernel32.NewProc("WaitForSingleObject") procWriteConsoleW = modkernel32.NewProc("WriteConsoleW") @@ -389,6 +401,7 @@ var ( procTransmitFile = modmswsock.NewProc("TransmitFile") procNetApiBufferFree = modnetapi32.NewProc("NetApiBufferFree") procNetGetJoinInformation = modnetapi32.NewProc("NetGetJoinInformation") + procNetUserEnum = modnetapi32.NewProc("NetUserEnum") procNetUserGetInfo = modnetapi32.NewProc("NetUserGetInfo") procNtCreateFile = modntdll.NewProc("NtCreateFile") procNtCreateNamedPipeFile = modntdll.NewProc("NtCreateNamedPipeFile") @@ -1641,6 +1654,22 @@ func CancelIoEx(s Handle, o *Overlapped) (err error) { return } +func ClearCommBreak(handle Handle) (err error) { + r1, _, e1 := syscall.Syscall(procClearCommBreak.Addr(), 1, uintptr(handle), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func ClearCommError(handle Handle, lpErrors *uint32, lpStat *ComStat) (err error) { + r1, _, e1 := syscall.Syscall(procClearCommError.Addr(), 3, uintptr(handle), uintptr(unsafe.Pointer(lpErrors)), uintptr(unsafe.Pointer(lpStat))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + func CloseHandle(handle Handle) (err error) { r1, _, e1 := syscall.Syscall(procCloseHandle.Addr(), 1, uintptr(handle), 0, 0) if r1 == 0 { @@ -1845,6 +1874,14 @@ func DeviceIoControl(handle Handle, ioControlCode uint32, inBuffer *byte, inBuff return } +func DisconnectNamedPipe(pipe Handle) (err error) { + r1, _, e1 := syscall.Syscall(procDisconnectNamedPipe.Addr(), 1, uintptr(pipe), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + func DuplicateHandle(hSourceProcessHandle Handle, hSourceHandle Handle, hTargetProcessHandle Handle, lpTargetHandle *Handle, dwDesiredAccess uint32, bInheritHandle bool, dwOptions uint32) (err error) { var _p0 uint32 if bInheritHandle { @@ -1857,6 +1894,14 @@ func DuplicateHandle(hSourceProcessHandle Handle, hSourceHandle Handle, hTargetP return } +func EscapeCommFunction(handle Handle, dwFunc uint32) (err error) { + r1, _, e1 := syscall.Syscall(procEscapeCommFunction.Addr(), 2, uintptr(handle), uintptr(dwFunc), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + func ExitProcess(exitcode uint32) { syscall.Syscall(procExitProcess.Addr(), 1, uintptr(exitcode), 0, 0) return @@ -2058,6 +2103,22 @@ func GetActiveProcessorCount(groupNumber uint16) (ret uint32) { return } +func GetCommModemStatus(handle Handle, lpModemStat *uint32) (err error) { + r1, _, e1 := syscall.Syscall(procGetCommModemStatus.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(lpModemStat)), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func GetCommState(handle Handle, lpDCB *DCB) (err error) { + r1, _, e1 := syscall.Syscall(procGetCommState.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(lpDCB)), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + func GetCommTimeouts(handle Handle, timeouts *CommTimeouts) (err error) { r1, _, e1 := syscall.Syscall(procGetCommTimeouts.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(timeouts)), 0) if r1 == 0 { @@ -2810,6 +2871,14 @@ func PulseEvent(event Handle) (err error) { return } +func PurgeComm(handle Handle, dwFlags uint32) (err error) { + r1, _, e1 := syscall.Syscall(procPurgeComm.Addr(), 2, uintptr(handle), uintptr(dwFlags), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + func QueryDosDevice(deviceName *uint16, targetPath *uint16, max uint32) (n uint32, err error) { r0, _, e1 := syscall.Syscall(procQueryDosDeviceW.Addr(), 3, uintptr(unsafe.Pointer(deviceName)), uintptr(unsafe.Pointer(targetPath)), uintptr(max)) n = uint32(r0) @@ -2924,6 +2993,30 @@ func ResumeThread(thread Handle) (ret uint32, err error) { return } +func SetCommBreak(handle Handle) (err error) { + r1, _, e1 := syscall.Syscall(procSetCommBreak.Addr(), 1, uintptr(handle), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func SetCommMask(handle Handle, dwEvtMask uint32) (err error) { + r1, _, e1 := syscall.Syscall(procSetCommMask.Addr(), 2, uintptr(handle), uintptr(dwEvtMask), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func SetCommState(handle Handle, lpDCB *DCB) (err error) { + r1, _, e1 := syscall.Syscall(procSetCommState.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(lpDCB)), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + func SetCommTimeouts(handle Handle, timeouts *CommTimeouts) (err error) { r1, _, e1 := syscall.Syscall(procSetCommTimeouts.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(timeouts)), 0) if r1 == 0 { @@ -2989,14 +3082,6 @@ func SetEndOfFile(handle Handle) (err error) { return } -func SetFileValidData(handle Handle, validDataLength int64) (err error) { - r1, _, e1 := syscall.Syscall(procSetFileValidData.Addr(), 2, uintptr(handle), uintptr(validDataLength), 0) - if r1 == 0 { - err = errnoErr(e1) - } - return -} - func SetEnvironmentVariable(name *uint16, value *uint16) (err error) { r1, _, e1 := syscall.Syscall(procSetEnvironmentVariableW.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(value)), 0) if r1 == 0 { @@ -3060,6 +3145,14 @@ func SetFileTime(handle Handle, ctime *Filetime, atime *Filetime, wtime *Filetim return } +func SetFileValidData(handle Handle, validDataLength int64) (err error) { + r1, _, e1 := syscall.Syscall(procSetFileValidData.Addr(), 2, uintptr(handle), uintptr(validDataLength), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + func SetHandleInformation(handle Handle, mask uint32, flags uint32) (err error) { r1, _, e1 := syscall.Syscall(procSetHandleInformation.Addr(), 3, uintptr(handle), uintptr(mask), uintptr(flags)) if r1 == 0 { @@ -3145,6 +3238,14 @@ func SetVolumeMountPoint(volumeMountPoint *uint16, volumeName *uint16) (err erro return } +func SetupComm(handle Handle, dwInQueue uint32, dwOutQueue uint32) (err error) { + r1, _, e1 := syscall.Syscall(procSetupComm.Addr(), 3, uintptr(handle), uintptr(dwInQueue), uintptr(dwOutQueue)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + func SizeofResource(module Handle, resInfo Handle) (size uint32, err error) { r0, _, e1 := syscall.Syscall(procSizeofResource.Addr(), 2, uintptr(module), uintptr(resInfo), 0) size = uint32(r0) @@ -3291,6 +3392,14 @@ func WTSGetActiveConsoleSessionId() (sessionID uint32) { return } +func WaitCommEvent(handle Handle, lpEvtMask *uint32, lpOverlapped *Overlapped) (err error) { + r1, _, e1 := syscall.Syscall(procWaitCommEvent.Addr(), 3, uintptr(handle), uintptr(unsafe.Pointer(lpEvtMask)), uintptr(unsafe.Pointer(lpOverlapped))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + func waitForMultipleObjects(count uint32, handles uintptr, waitAll bool, waitMilliseconds uint32) (event uint32, err error) { var _p0 uint32 if waitAll { @@ -3378,6 +3487,14 @@ func NetGetJoinInformation(server *uint16, name **uint16, bufType *uint32) (nete return } +func NetUserEnum(serverName *uint16, level uint32, filter uint32, buf **byte, prefMaxLen uint32, entriesRead *uint32, totalEntries *uint32, resumeHandle *uint32) (neterr error) { + r0, _, _ := syscall.Syscall9(procNetUserEnum.Addr(), 8, uintptr(unsafe.Pointer(serverName)), uintptr(level), uintptr(filter), uintptr(unsafe.Pointer(buf)), uintptr(prefMaxLen), uintptr(unsafe.Pointer(entriesRead)), uintptr(unsafe.Pointer(totalEntries)), uintptr(unsafe.Pointer(resumeHandle)), 0) + if r0 != 0 { + neterr = syscall.Errno(r0) + } + return +} + func NetUserGetInfo(serverName *uint16, userName *uint16, level uint32, buf **byte) (neterr error) { r0, _, _ := syscall.Syscall6(procNetUserGetInfo.Addr(), 4, uintptr(unsafe.Pointer(serverName)), uintptr(unsafe.Pointer(userName)), uintptr(level), uintptr(unsafe.Pointer(buf)), 0, 0) if r0 != 0 { diff --git a/vendor/google.golang.org/protobuf/encoding/prototext/decode.go b/vendor/google.golang.org/protobuf/encoding/prototext/decode.go index a45f112bc..24bc98ac4 100644 --- a/vendor/google.golang.org/protobuf/encoding/prototext/decode.go +++ b/vendor/google.golang.org/protobuf/encoding/prototext/decode.go @@ -84,7 +84,7 @@ type decoder struct { } // newError returns an error object with position info. -func (d decoder) newError(pos int, f string, x ...interface{}) error { +func (d decoder) newError(pos int, f string, x ...any) error { line, column := d.Position(pos) head := fmt.Sprintf("(line %d:%d): ", line, column) return errors.New(head+f, x...) @@ -96,7 +96,7 @@ func (d decoder) unexpectedTokenError(tok text.Token) error { } // syntaxError returns a syntax error for given position. -func (d decoder) syntaxError(pos int, f string, x ...interface{}) error { +func (d decoder) syntaxError(pos int, f string, x ...any) error { line, column := d.Position(pos) head := fmt.Sprintf("syntax error (line %d:%d): ", line, column) return errors.New(head+f, x...) diff --git a/vendor/google.golang.org/protobuf/encoding/prototext/encode.go b/vendor/google.golang.org/protobuf/encoding/prototext/encode.go index 95967e811..1f57e6610 100644 --- a/vendor/google.golang.org/protobuf/encoding/prototext/encode.go +++ b/vendor/google.golang.org/protobuf/encoding/prototext/encode.go @@ -27,15 +27,17 @@ const defaultIndent = " " // Format formats the message as a multiline string. // This function is only intended for human consumption and ignores errors. -// Do not depend on the output being stable. It may change over time across -// different versions of the program. +// Do not depend on the output being stable. Its output will change across +// different builds of your program, even when using the same version of the +// protobuf module. func Format(m proto.Message) string { return MarshalOptions{Multiline: true}.Format(m) } // Marshal writes the given [proto.Message] in textproto format using default -// options. Do not depend on the output being stable. It may change over time -// across different versions of the program. +// options. Do not depend on the output being stable. Its output will change +// across different builds of your program, even when using the same version of +// the protobuf module. func Marshal(m proto.Message) ([]byte, error) { return MarshalOptions{}.Marshal(m) } @@ -84,8 +86,9 @@ type MarshalOptions struct { // Format formats the message as a string. // This method is only intended for human consumption and ignores errors. -// Do not depend on the output being stable. It may change over time across -// different versions of the program. +// Do not depend on the output being stable. Its output will change across +// different builds of your program, even when using the same version of the +// protobuf module. func (o MarshalOptions) Format(m proto.Message) string { if m == nil || !m.ProtoReflect().IsValid() { return "" // invalid syntax, but okay since this is for debugging @@ -98,8 +101,9 @@ func (o MarshalOptions) Format(m proto.Message) string { } // Marshal writes the given [proto.Message] in textproto format using options in -// MarshalOptions object. Do not depend on the output being stable. It may -// change over time across different versions of the program. +// MarshalOptions object. Do not depend on the output being stable. Its output +// will change across different builds of your program, even when using the +// same version of the protobuf module. func (o MarshalOptions) Marshal(m proto.Message) ([]byte, error) { return o.marshal(nil, m) } diff --git a/vendor/google.golang.org/protobuf/internal/descfmt/stringer.go b/vendor/google.golang.org/protobuf/internal/descfmt/stringer.go index a45625c8d..87e46bd4d 100644 --- a/vendor/google.golang.org/protobuf/internal/descfmt/stringer.go +++ b/vendor/google.golang.org/protobuf/internal/descfmt/stringer.go @@ -252,6 +252,7 @@ func formatDescOpt(t protoreflect.Descriptor, isRoot, allowMulti bool, record fu {rv.MethodByName("Values"), "Values"}, {rv.MethodByName("ReservedNames"), "ReservedNames"}, {rv.MethodByName("ReservedRanges"), "ReservedRanges"}, + {rv.MethodByName("IsClosed"), "IsClosed"}, }...) case protoreflect.EnumValueDescriptor: diff --git a/vendor/google.golang.org/protobuf/internal/editiondefaults/editions_defaults.binpb b/vendor/google.golang.org/protobuf/internal/editiondefaults/editions_defaults.binpb index 18f0756874367adcdb790ffde125b6a7388b4eaa..ff6a38360add36f53d48bb0863b701696e0d7b2d 100644 GIT binary patch literal 93 zcmd;*mUzal#C*w)K}(Q>QGiK;Nr72|(SYfa9TNv5m$bxlxFnMRqXeS@6Ht;7B*_4j Ve8H{+(u69m1u{(G8N0>{b^xZ!4_5#H literal 63 zcmd-Q6yo7v6kw8IQef6#G+>f=#?A#2ViI7KU{qiN3NcDNhX^qu3B6!fc*d^rf*k<7 Cln3+x diff --git a/vendor/google.golang.org/protobuf/internal/editionssupport/editions.go b/vendor/google.golang.org/protobuf/internal/editionssupport/editions.go new file mode 100644 index 000000000..029a6a12d --- /dev/null +++ b/vendor/google.golang.org/protobuf/internal/editionssupport/editions.go @@ -0,0 +1,13 @@ +// Copyright 2024 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package editionssupport defines constants for editions that are supported. +package editionssupport + +import descriptorpb "google.golang.org/protobuf/types/descriptorpb" + +const ( + Minimum = descriptorpb.Edition_EDITION_PROTO2 + Maximum = descriptorpb.Edition_EDITION_2023 +) diff --git a/vendor/google.golang.org/protobuf/internal/encoding/tag/tag.go b/vendor/google.golang.org/protobuf/internal/encoding/tag/tag.go index 373d20837..7e87c7604 100644 --- a/vendor/google.golang.org/protobuf/internal/encoding/tag/tag.go +++ b/vendor/google.golang.org/protobuf/internal/encoding/tag/tag.go @@ -32,6 +32,7 @@ var byteType = reflect.TypeOf(byte(0)) func Unmarshal(tag string, goType reflect.Type, evs protoreflect.EnumValueDescriptors) protoreflect.FieldDescriptor { f := new(filedesc.Field) f.L0.ParentFile = filedesc.SurrogateProto2 + f.L1.EditionFeatures = f.L0.ParentFile.L1.EditionFeatures for len(tag) > 0 { i := strings.IndexByte(tag, ',') if i < 0 { @@ -107,8 +108,7 @@ func Unmarshal(tag string, goType reflect.Type, evs protoreflect.EnumValueDescri f.L1.StringName.InitJSON(jsonName) } case s == "packed": - f.L1.HasPacked = true - f.L1.IsPacked = true + f.L1.EditionFeatures.IsPacked = true case strings.HasPrefix(s, "weak="): f.L1.IsWeak = true f.L1.Message = filedesc.PlaceholderMessage(protoreflect.FullName(s[len("weak="):])) diff --git a/vendor/google.golang.org/protobuf/internal/encoding/text/decode.go b/vendor/google.golang.org/protobuf/internal/encoding/text/decode.go index 87853e786..099b2bf45 100644 --- a/vendor/google.golang.org/protobuf/internal/encoding/text/decode.go +++ b/vendor/google.golang.org/protobuf/internal/encoding/text/decode.go @@ -601,7 +601,7 @@ func (d *Decoder) consumeToken(kind Kind, size int, attrs uint8) Token { // newSyntaxError returns a syntax error with line and column information for // current position. -func (d *Decoder) newSyntaxError(f string, x ...interface{}) error { +func (d *Decoder) newSyntaxError(f string, x ...any) error { e := errors.New(f, x...) line, column := d.Position(len(d.orig) - len(d.in)) return errors.New("syntax error (line %d:%d): %v", line, column, e) diff --git a/vendor/google.golang.org/protobuf/internal/errors/errors.go b/vendor/google.golang.org/protobuf/internal/errors/errors.go index 20c17b35e..c2d6bd526 100644 --- a/vendor/google.golang.org/protobuf/internal/errors/errors.go +++ b/vendor/google.golang.org/protobuf/internal/errors/errors.go @@ -17,7 +17,7 @@ var Error = errors.New("protobuf error") // New formats a string according to the format specifier and arguments and // returns an error that has a "proto" prefix. -func New(f string, x ...interface{}) error { +func New(f string, x ...any) error { return &prefixError{s: format(f, x...)} } @@ -43,7 +43,7 @@ func (e *prefixError) Unwrap() error { // Wrap returns an error that has a "proto" prefix, the formatted string described // by the format specifier and arguments, and a suffix of err. The error wraps err. -func Wrap(err error, f string, x ...interface{}) error { +func Wrap(err error, f string, x ...any) error { return &wrapError{ s: format(f, x...), err: err, @@ -67,7 +67,7 @@ func (e *wrapError) Is(target error) bool { return target == Error } -func format(f string, x ...interface{}) string { +func format(f string, x ...any) string { // avoid "proto: " prefix when chaining for i := 0; i < len(x); i++ { switch e := x[i].(type) { @@ -87,3 +87,18 @@ func InvalidUTF8(name string) error { func RequiredNotSet(name string) error { return New("required field %v not set", name) } + +type SizeMismatchError struct { + Calculated, Measured int +} + +func (e *SizeMismatchError) Error() string { + return fmt.Sprintf("size mismatch (see https://github.com/golang/protobuf/issues/1609): calculated=%d, measured=%d", e.Calculated, e.Measured) +} + +func MismatchedSizeCalculation(calculated, measured int) error { + return &SizeMismatchError{ + Calculated: calculated, + Measured: measured, + } +} diff --git a/vendor/google.golang.org/protobuf/internal/filedesc/desc.go b/vendor/google.golang.org/protobuf/internal/filedesc/desc.go index 8826bcf40..df53ff40b 100644 --- a/vendor/google.golang.org/protobuf/internal/filedesc/desc.go +++ b/vendor/google.golang.org/protobuf/internal/filedesc/desc.go @@ -7,6 +7,7 @@ package filedesc import ( "bytes" "fmt" + "strings" "sync" "sync/atomic" @@ -108,9 +109,12 @@ func (fd *File) ParentFile() protoreflect.FileDescriptor { return fd } func (fd *File) Parent() protoreflect.Descriptor { return nil } func (fd *File) Index() int { return 0 } func (fd *File) Syntax() protoreflect.Syntax { return fd.L1.Syntax } -func (fd *File) Name() protoreflect.Name { return fd.L1.Package.Name() } -func (fd *File) FullName() protoreflect.FullName { return fd.L1.Package } -func (fd *File) IsPlaceholder() bool { return false } + +// Not exported and just used to reconstruct the original FileDescriptor proto +func (fd *File) Edition() int32 { return int32(fd.L1.Edition) } +func (fd *File) Name() protoreflect.Name { return fd.L1.Package.Name() } +func (fd *File) FullName() protoreflect.FullName { return fd.L1.Package } +func (fd *File) IsPlaceholder() bool { return false } func (fd *File) Options() protoreflect.ProtoMessage { if f := fd.lazyInit().Options; f != nil { return f() @@ -202,6 +206,9 @@ func (ed *Enum) lazyInit() *EnumL2 { ed.L0.ParentFile.lazyInit() // implicitly initializes L2 return ed.L2 } +func (ed *Enum) IsClosed() bool { + return !ed.L1.EditionFeatures.IsOpenEnum +} func (ed *EnumValue) Options() protoreflect.ProtoMessage { if f := ed.L1.Options; f != nil { @@ -251,10 +258,6 @@ type ( StringName stringName IsProto3Optional bool // promoted from google.protobuf.FieldDescriptorProto IsWeak bool // promoted from google.protobuf.FieldOptions - HasPacked bool // promoted from google.protobuf.FieldOptions - IsPacked bool // promoted from google.protobuf.FieldOptions - HasEnforceUTF8 bool // promoted from google.protobuf.FieldOptions - EnforceUTF8 bool // promoted from google.protobuf.FieldOptions Default defaultValue ContainingOneof protoreflect.OneofDescriptor // must be consistent with Message.Oneofs.Fields Enum protoreflect.EnumDescriptor @@ -331,8 +334,7 @@ func (fd *Field) HasPresence() bool { if fd.L1.Cardinality == protoreflect.Repeated { return false } - explicitFieldPresence := fd.Syntax() == protoreflect.Editions && fd.L1.EditionFeatures.IsFieldPresence - return fd.Syntax() == protoreflect.Proto2 || explicitFieldPresence || fd.L1.Message != nil || fd.L1.ContainingOneof != nil + return fd.IsExtension() || fd.L1.EditionFeatures.IsFieldPresence || fd.L1.Message != nil || fd.L1.ContainingOneof != nil } func (fd *Field) HasOptionalKeyword() bool { return (fd.L0.ParentFile.L1.Syntax == protoreflect.Proto2 && fd.L1.Cardinality == protoreflect.Optional && fd.L1.ContainingOneof == nil) || fd.L1.IsProto3Optional @@ -345,14 +347,7 @@ func (fd *Field) IsPacked() bool { case protoreflect.StringKind, protoreflect.BytesKind, protoreflect.MessageKind, protoreflect.GroupKind: return false } - if fd.L0.ParentFile.L1.Syntax == protoreflect.Editions { - return fd.L1.EditionFeatures.IsPacked - } - if fd.L0.ParentFile.L1.Syntax == protoreflect.Proto3 { - // proto3 repeated fields are packed by default. - return !fd.L1.HasPacked || fd.L1.IsPacked - } - return fd.L1.IsPacked + return fd.L1.EditionFeatures.IsPacked } func (fd *Field) IsExtension() bool { return false } func (fd *Field) IsWeak() bool { return fd.L1.IsWeak } @@ -388,6 +383,10 @@ func (fd *Field) Message() protoreflect.MessageDescriptor { } return fd.L1.Message } +func (fd *Field) IsMapEntry() bool { + parent, ok := fd.L0.Parent.(protoreflect.MessageDescriptor) + return ok && parent.IsMapEntry() +} func (fd *Field) Format(s fmt.State, r rune) { descfmt.FormatDesc(s, r, fd) } func (fd *Field) ProtoType(protoreflect.FieldDescriptor) {} @@ -399,13 +398,7 @@ func (fd *Field) ProtoType(protoreflect.FieldDescriptor) {} // WARNING: This method is exempt from the compatibility promise and may be // removed in the future without warning. func (fd *Field) EnforceUTF8() bool { - if fd.L0.ParentFile.L1.Syntax == protoreflect.Editions { - return fd.L1.EditionFeatures.IsUTF8Validated - } - if fd.L1.HasEnforceUTF8 { - return fd.L1.EnforceUTF8 - } - return fd.L0.ParentFile.L1.Syntax == protoreflect.Proto3 + return fd.L1.EditionFeatures.IsUTF8Validated } func (od *Oneof) IsSynthetic() bool { @@ -438,7 +431,6 @@ type ( Options func() protoreflect.ProtoMessage StringName stringName IsProto3Optional bool // promoted from google.protobuf.FieldDescriptorProto - IsPacked bool // promoted from google.protobuf.FieldOptions Default defaultValue Enum protoreflect.EnumDescriptor Message protoreflect.MessageDescriptor @@ -461,7 +453,16 @@ func (xd *Extension) HasPresence() bool { return xd.L1.Cardi func (xd *Extension) HasOptionalKeyword() bool { return (xd.L0.ParentFile.L1.Syntax == protoreflect.Proto2 && xd.L1.Cardinality == protoreflect.Optional) || xd.lazyInit().IsProto3Optional } -func (xd *Extension) IsPacked() bool { return xd.lazyInit().IsPacked } +func (xd *Extension) IsPacked() bool { + if xd.L1.Cardinality != protoreflect.Repeated { + return false + } + switch xd.L1.Kind { + case protoreflect.StringKind, protoreflect.BytesKind, protoreflect.MessageKind, protoreflect.GroupKind: + return false + } + return xd.L1.EditionFeatures.IsPacked +} func (xd *Extension) IsExtension() bool { return true } func (xd *Extension) IsWeak() bool { return false } func (xd *Extension) IsList() bool { return xd.Cardinality() == protoreflect.Repeated } @@ -542,8 +543,9 @@ func (md *Method) ProtoInternal(pragma.DoNotImplement) {} // Surrogate files are can be used to create standalone descriptors // where the syntax is only information derived from the parent file. var ( - SurrogateProto2 = &File{L1: FileL1{Syntax: protoreflect.Proto2}, L2: &FileL2{}} - SurrogateProto3 = &File{L1: FileL1{Syntax: protoreflect.Proto3}, L2: &FileL2{}} + SurrogateProto2 = &File{L1: FileL1{Syntax: protoreflect.Proto2}, L2: &FileL2{}} + SurrogateProto3 = &File{L1: FileL1{Syntax: protoreflect.Proto3}, L2: &FileL2{}} + SurrogateEdition2023 = &File{L1: FileL1{Syntax: protoreflect.Editions, Edition: Edition2023}, L2: &FileL2{}} ) type ( @@ -585,6 +587,34 @@ func (s *stringName) InitJSON(name string) { s.nameJSON = name } +// Returns true if this field is structured like the synthetic field of a proto2 +// group. This allows us to expand our treatment of delimited fields without +// breaking proto2 files that have been upgraded to editions. +func isGroupLike(fd protoreflect.FieldDescriptor) bool { + // Groups are always group types. + if fd.Kind() != protoreflect.GroupKind { + return false + } + + // Group fields are always the lowercase type name. + if strings.ToLower(string(fd.Message().Name())) != string(fd.Name()) { + return false + } + + // Groups could only be defined in the same file they're used. + if fd.Message().ParentFile() != fd.ParentFile() { + return false + } + + // Group messages are always defined in the same scope as the field. File + // level extensions will compare NULL == NULL here, which is why the file + // comparison above is necessary to ensure both come from the same file. + if fd.IsExtension() { + return fd.Parent() == fd.Message().Parent() + } + return fd.ContainingMessage() == fd.Message().Parent() +} + func (s *stringName) lazyInit(fd protoreflect.FieldDescriptor) *stringName { s.once.Do(func() { if fd.IsExtension() { @@ -605,7 +635,7 @@ func (s *stringName) lazyInit(fd protoreflect.FieldDescriptor) *stringName { // Format the text name. s.nameText = string(fd.Name()) - if fd.Kind() == protoreflect.GroupKind { + if isGroupLike(fd) { s.nameText = string(fd.Message().Name()) } } diff --git a/vendor/google.golang.org/protobuf/internal/filedesc/desc_init.go b/vendor/google.golang.org/protobuf/internal/filedesc/desc_init.go index 237e64fd2..8a57d60b0 100644 --- a/vendor/google.golang.org/protobuf/internal/filedesc/desc_init.go +++ b/vendor/google.golang.org/protobuf/internal/filedesc/desc_init.go @@ -113,8 +113,10 @@ func (fd *File) unmarshalSeed(b []byte) { switch string(v) { case "proto2": fd.L1.Syntax = protoreflect.Proto2 + fd.L1.Edition = EditionProto2 case "proto3": fd.L1.Syntax = protoreflect.Proto3 + fd.L1.Edition = EditionProto3 case "editions": fd.L1.Syntax = protoreflect.Editions default: @@ -177,11 +179,10 @@ func (fd *File) unmarshalSeed(b []byte) { // If syntax is missing, it is assumed to be proto2. if fd.L1.Syntax == 0 { fd.L1.Syntax = protoreflect.Proto2 + fd.L1.Edition = EditionProto2 } - if fd.L1.Syntax == protoreflect.Editions { - fd.L1.EditionFeatures = getFeaturesFor(fd.L1.Edition) - } + fd.L1.EditionFeatures = getFeaturesFor(fd.L1.Edition) // Parse editions features from options if any if options != nil { @@ -267,6 +268,7 @@ func (ed *Enum) unmarshalSeed(b []byte, sb *strs.Builder, pf *File, pd protorefl ed.L0.ParentFile = pf ed.L0.Parent = pd ed.L0.Index = i + ed.L1.EditionFeatures = featuresFromParentDesc(ed.Parent()) var numValues int for b := b; len(b) > 0; { @@ -443,6 +445,7 @@ func (xd *Extension) unmarshalSeed(b []byte, sb *strs.Builder, pf *File, pd prot xd.L0.ParentFile = pf xd.L0.Parent = pd xd.L0.Index = i + xd.L1.EditionFeatures = featuresFromParentDesc(pd) for len(b) > 0 { num, typ, n := protowire.ConsumeTag(b) @@ -467,6 +470,38 @@ func (xd *Extension) unmarshalSeed(b []byte, sb *strs.Builder, pf *File, pd prot xd.L0.FullName = appendFullName(sb, pd.FullName(), v) case genid.FieldDescriptorProto_Extendee_field_number: xd.L1.Extendee = PlaceholderMessage(makeFullName(sb, v)) + case genid.FieldDescriptorProto_Options_field_number: + xd.unmarshalOptions(v) + } + default: + m := protowire.ConsumeFieldValue(num, typ, b) + b = b[m:] + } + } + + if xd.L1.Kind == protoreflect.MessageKind && xd.L1.EditionFeatures.IsDelimitedEncoded { + xd.L1.Kind = protoreflect.GroupKind + } +} + +func (xd *Extension) unmarshalOptions(b []byte) { + for len(b) > 0 { + num, typ, n := protowire.ConsumeTag(b) + b = b[n:] + switch typ { + case protowire.VarintType: + v, m := protowire.ConsumeVarint(b) + b = b[m:] + switch num { + case genid.FieldOptions_Packed_field_number: + xd.L1.EditionFeatures.IsPacked = protowire.DecodeBool(v) + } + case protowire.BytesType: + v, m := protowire.ConsumeBytes(b) + b = b[m:] + switch num { + case genid.FieldOptions_Features_field_number: + xd.L1.EditionFeatures = unmarshalFeatureSet(v, xd.L1.EditionFeatures) } default: m := protowire.ConsumeFieldValue(num, typ, b) @@ -499,7 +534,7 @@ func (sd *Service) unmarshalSeed(b []byte, sb *strs.Builder, pf *File, pd protor } var nameBuilderPool = sync.Pool{ - New: func() interface{} { return new(strs.Builder) }, + New: func() any { return new(strs.Builder) }, } func getBuilder() *strs.Builder { diff --git a/vendor/google.golang.org/protobuf/internal/filedesc/desc_lazy.go b/vendor/google.golang.org/protobuf/internal/filedesc/desc_lazy.go index 482a61cc1..e56c91a8d 100644 --- a/vendor/google.golang.org/protobuf/internal/filedesc/desc_lazy.go +++ b/vendor/google.golang.org/protobuf/internal/filedesc/desc_lazy.go @@ -45,6 +45,11 @@ func (file *File) resolveMessages() { case protoreflect.MessageKind, protoreflect.GroupKind: fd.L1.Message = file.resolveMessageDependency(fd.L1.Message, listFieldDeps, depIdx) depIdx++ + if fd.L1.Kind == protoreflect.GroupKind && (fd.IsMap() || fd.IsMapEntry()) { + // A map field might inherit delimited encoding from a file-wide default feature. + // But maps never actually use delimited encoding. (At least for now...) + fd.L1.Kind = protoreflect.MessageKind + } } // Default is resolved here since it depends on Enum being resolved. @@ -466,10 +471,10 @@ func (fd *Field) unmarshalFull(b []byte, sb *strs.Builder, pf *File, pd protoref b = b[m:] } } - if fd.Syntax() == protoreflect.Editions && fd.L1.Kind == protoreflect.MessageKind && fd.L1.EditionFeatures.IsDelimitedEncoded { + if fd.L1.Kind == protoreflect.MessageKind && fd.L1.EditionFeatures.IsDelimitedEncoded { fd.L1.Kind = protoreflect.GroupKind } - if fd.Syntax() == protoreflect.Editions && fd.L1.EditionFeatures.IsLegacyRequired { + if fd.L1.EditionFeatures.IsLegacyRequired { fd.L1.Cardinality = protoreflect.Required } if rawTypeName != nil { @@ -496,13 +501,11 @@ func (fd *Field) unmarshalOptions(b []byte) { b = b[m:] switch num { case genid.FieldOptions_Packed_field_number: - fd.L1.HasPacked = true - fd.L1.IsPacked = protowire.DecodeBool(v) + fd.L1.EditionFeatures.IsPacked = protowire.DecodeBool(v) case genid.FieldOptions_Weak_field_number: fd.L1.IsWeak = protowire.DecodeBool(v) case FieldOptions_EnforceUTF8: - fd.L1.HasEnforceUTF8 = true - fd.L1.EnforceUTF8 = protowire.DecodeBool(v) + fd.L1.EditionFeatures.IsUTF8Validated = protowire.DecodeBool(v) } case protowire.BytesType: v, m := protowire.ConsumeBytes(b) @@ -548,7 +551,6 @@ func (od *Oneof) unmarshalFull(b []byte, sb *strs.Builder, pf *File, pd protoref func (xd *Extension) unmarshalFull(b []byte, sb *strs.Builder) { var rawTypeName []byte var rawOptions []byte - xd.L1.EditionFeatures = featuresFromParentDesc(xd.L1.Extendee) xd.L2 = new(ExtensionL2) for len(b) > 0 { num, typ, n := protowire.ConsumeTag(b) @@ -572,7 +574,6 @@ func (xd *Extension) unmarshalFull(b []byte, sb *strs.Builder) { case genid.FieldDescriptorProto_TypeName_field_number: rawTypeName = v case genid.FieldDescriptorProto_Options_field_number: - xd.unmarshalOptions(v) rawOptions = appendOptions(rawOptions, v) } default: @@ -580,12 +581,6 @@ func (xd *Extension) unmarshalFull(b []byte, sb *strs.Builder) { b = b[m:] } } - if xd.Syntax() == protoreflect.Editions && xd.L1.Kind == protoreflect.MessageKind && xd.L1.EditionFeatures.IsDelimitedEncoded { - xd.L1.Kind = protoreflect.GroupKind - } - if xd.Syntax() == protoreflect.Editions && xd.L1.EditionFeatures.IsLegacyRequired { - xd.L1.Cardinality = protoreflect.Required - } if rawTypeName != nil { name := makeFullName(sb, rawTypeName) switch xd.L1.Kind { @@ -598,32 +593,6 @@ func (xd *Extension) unmarshalFull(b []byte, sb *strs.Builder) { xd.L2.Options = xd.L0.ParentFile.builder.optionsUnmarshaler(&descopts.Field, rawOptions) } -func (xd *Extension) unmarshalOptions(b []byte) { - for len(b) > 0 { - num, typ, n := protowire.ConsumeTag(b) - b = b[n:] - switch typ { - case protowire.VarintType: - v, m := protowire.ConsumeVarint(b) - b = b[m:] - switch num { - case genid.FieldOptions_Packed_field_number: - xd.L2.IsPacked = protowire.DecodeBool(v) - } - case protowire.BytesType: - v, m := protowire.ConsumeBytes(b) - b = b[m:] - switch num { - case genid.FieldOptions_Features_field_number: - xd.L1.EditionFeatures = unmarshalFeatureSet(v, xd.L1.EditionFeatures) - } - default: - m := protowire.ConsumeFieldValue(num, typ, b) - b = b[m:] - } - } -} - func (sd *Service) unmarshalFull(b []byte, sb *strs.Builder) { var rawMethods [][]byte var rawOptions []byte diff --git a/vendor/google.golang.org/protobuf/internal/filedesc/desc_list_gen.go b/vendor/google.golang.org/protobuf/internal/filedesc/desc_list_gen.go index 30db19fdc..f4107c05f 100644 --- a/vendor/google.golang.org/protobuf/internal/filedesc/desc_list_gen.go +++ b/vendor/google.golang.org/protobuf/internal/filedesc/desc_list_gen.go @@ -8,6 +8,7 @@ package filedesc import ( "fmt" + "strings" "sync" "google.golang.org/protobuf/internal/descfmt" @@ -198,6 +199,16 @@ func (p *Fields) lazyInit() *Fields { if _, ok := p.byText[d.TextName()]; !ok { p.byText[d.TextName()] = d } + if isGroupLike(d) { + lowerJSONName := strings.ToLower(d.JSONName()) + if _, ok := p.byJSON[lowerJSONName]; !ok { + p.byJSON[lowerJSONName] = d + } + lowerTextName := strings.ToLower(d.TextName()) + if _, ok := p.byText[lowerTextName]; !ok { + p.byText[lowerTextName] = d + } + } if _, ok := p.byNum[d.Number()]; !ok { p.byNum[d.Number()] = d } diff --git a/vendor/google.golang.org/protobuf/internal/filedesc/editions.go b/vendor/google.golang.org/protobuf/internal/filedesc/editions.go index 0375a49d4..11f5f356b 100644 --- a/vendor/google.golang.org/protobuf/internal/filedesc/editions.go +++ b/vendor/google.golang.org/protobuf/internal/filedesc/editions.go @@ -14,9 +14,13 @@ import ( ) var defaultsCache = make(map[Edition]EditionFeatures) +var defaultsKeys = []Edition{} func init() { unmarshalEditionDefaults(editiondefaults.Defaults) + SurrogateProto2.L1.EditionFeatures = getFeaturesFor(EditionProto2) + SurrogateProto3.L1.EditionFeatures = getFeaturesFor(EditionProto3) + SurrogateEdition2023.L1.EditionFeatures = getFeaturesFor(Edition2023) } func unmarshalGoFeature(b []byte, parent EditionFeatures) EditionFeatures { @@ -104,12 +108,15 @@ func unmarshalEditionDefault(b []byte) { v, m := protowire.ConsumeBytes(b) b = b[m:] switch num { - case genid.FeatureSetDefaults_FeatureSetEditionDefault_Features_field_number: + case genid.FeatureSetDefaults_FeatureSetEditionDefault_FixedFeatures_field_number: + fs = unmarshalFeatureSet(v, fs) + case genid.FeatureSetDefaults_FeatureSetEditionDefault_OverridableFeatures_field_number: fs = unmarshalFeatureSet(v, fs) } } } defaultsCache[ed] = fs + defaultsKeys = append(defaultsKeys, ed) } func unmarshalEditionDefaults(b []byte) { @@ -135,8 +142,15 @@ func unmarshalEditionDefaults(b []byte) { } func getFeaturesFor(ed Edition) EditionFeatures { - if def, ok := defaultsCache[ed]; ok { - return def + match := EditionUnknown + for _, key := range defaultsKeys { + if key > ed { + break + } + match = key + } + if match == EditionUnknown { + panic(fmt.Sprintf("unsupported edition: %v", ed)) } - panic(fmt.Sprintf("unsupported edition: %v", ed)) + return defaultsCache[match] } diff --git a/vendor/google.golang.org/protobuf/internal/filedesc/placeholder.go b/vendor/google.golang.org/protobuf/internal/filedesc/placeholder.go index 28240ebc5..bfb3b8417 100644 --- a/vendor/google.golang.org/protobuf/internal/filedesc/placeholder.go +++ b/vendor/google.golang.org/protobuf/internal/filedesc/placeholder.go @@ -63,6 +63,7 @@ func (e PlaceholderEnum) Options() protoreflect.ProtoMessage { return des func (e PlaceholderEnum) Values() protoreflect.EnumValueDescriptors { return emptyEnumValues } func (e PlaceholderEnum) ReservedNames() protoreflect.Names { return emptyNames } func (e PlaceholderEnum) ReservedRanges() protoreflect.EnumRanges { return emptyEnumRanges } +func (e PlaceholderEnum) IsClosed() bool { return false } func (e PlaceholderEnum) ProtoType(protoreflect.EnumDescriptor) { return } func (e PlaceholderEnum) ProtoInternal(pragma.DoNotImplement) { return } diff --git a/vendor/google.golang.org/protobuf/internal/filetype/build.go b/vendor/google.golang.org/protobuf/internal/filetype/build.go index f0e38c4ef..ba83fea44 100644 --- a/vendor/google.golang.org/protobuf/internal/filetype/build.go +++ b/vendor/google.golang.org/protobuf/internal/filetype/build.go @@ -68,7 +68,7 @@ type Builder struct { // and for input and output messages referenced by service methods. // Dependencies must come after declarations, but the ordering of // dependencies themselves is unspecified. - GoTypes []interface{} + GoTypes []any // DependencyIndexes is an ordered list of indexes into GoTypes for the // dependencies of messages, extensions, or services. @@ -268,7 +268,7 @@ func (x depIdxs) Get(i, j int32) int32 { type ( resolverByIndex struct { - goTypes []interface{} + goTypes []any depIdxs depIdxs fileRegistry } diff --git a/vendor/google.golang.org/protobuf/internal/genid/descriptor_gen.go b/vendor/google.golang.org/protobuf/internal/genid/descriptor_gen.go index 40272c893..f30ab6b58 100644 --- a/vendor/google.golang.org/protobuf/internal/genid/descriptor_gen.go +++ b/vendor/google.golang.org/protobuf/internal/genid/descriptor_gen.go @@ -21,6 +21,7 @@ const ( // Enum values for google.protobuf.Edition. const ( Edition_EDITION_UNKNOWN_enum_value = 0 + Edition_EDITION_LEGACY_enum_value = 900 Edition_EDITION_PROTO2_enum_value = 998 Edition_EDITION_PROTO3_enum_value = 999 Edition_EDITION_2023_enum_value = 1000 @@ -653,6 +654,7 @@ const ( FieldOptions_Targets_field_name protoreflect.Name = "targets" FieldOptions_EditionDefaults_field_name protoreflect.Name = "edition_defaults" FieldOptions_Features_field_name protoreflect.Name = "features" + FieldOptions_FeatureSupport_field_name protoreflect.Name = "feature_support" FieldOptions_UninterpretedOption_field_name protoreflect.Name = "uninterpreted_option" FieldOptions_Ctype_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.ctype" @@ -667,6 +669,7 @@ const ( FieldOptions_Targets_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.targets" FieldOptions_EditionDefaults_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.edition_defaults" FieldOptions_Features_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.features" + FieldOptions_FeatureSupport_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.feature_support" FieldOptions_UninterpretedOption_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.uninterpreted_option" ) @@ -684,6 +687,7 @@ const ( FieldOptions_Targets_field_number protoreflect.FieldNumber = 19 FieldOptions_EditionDefaults_field_number protoreflect.FieldNumber = 20 FieldOptions_Features_field_number protoreflect.FieldNumber = 21 + FieldOptions_FeatureSupport_field_number protoreflect.FieldNumber = 22 FieldOptions_UninterpretedOption_field_number protoreflect.FieldNumber = 999 ) @@ -767,6 +771,33 @@ const ( FieldOptions_EditionDefault_Value_field_number protoreflect.FieldNumber = 2 ) +// Names for google.protobuf.FieldOptions.FeatureSupport. +const ( + FieldOptions_FeatureSupport_message_name protoreflect.Name = "FeatureSupport" + FieldOptions_FeatureSupport_message_fullname protoreflect.FullName = "google.protobuf.FieldOptions.FeatureSupport" +) + +// Field names for google.protobuf.FieldOptions.FeatureSupport. +const ( + FieldOptions_FeatureSupport_EditionIntroduced_field_name protoreflect.Name = "edition_introduced" + FieldOptions_FeatureSupport_EditionDeprecated_field_name protoreflect.Name = "edition_deprecated" + FieldOptions_FeatureSupport_DeprecationWarning_field_name protoreflect.Name = "deprecation_warning" + FieldOptions_FeatureSupport_EditionRemoved_field_name protoreflect.Name = "edition_removed" + + FieldOptions_FeatureSupport_EditionIntroduced_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.FeatureSupport.edition_introduced" + FieldOptions_FeatureSupport_EditionDeprecated_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.FeatureSupport.edition_deprecated" + FieldOptions_FeatureSupport_DeprecationWarning_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.FeatureSupport.deprecation_warning" + FieldOptions_FeatureSupport_EditionRemoved_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.FeatureSupport.edition_removed" +) + +// Field numbers for google.protobuf.FieldOptions.FeatureSupport. +const ( + FieldOptions_FeatureSupport_EditionIntroduced_field_number protoreflect.FieldNumber = 1 + FieldOptions_FeatureSupport_EditionDeprecated_field_number protoreflect.FieldNumber = 2 + FieldOptions_FeatureSupport_DeprecationWarning_field_number protoreflect.FieldNumber = 3 + FieldOptions_FeatureSupport_EditionRemoved_field_number protoreflect.FieldNumber = 4 +) + // Names for google.protobuf.OneofOptions. const ( OneofOptions_message_name protoreflect.Name = "OneofOptions" @@ -829,11 +860,13 @@ const ( EnumValueOptions_Deprecated_field_name protoreflect.Name = "deprecated" EnumValueOptions_Features_field_name protoreflect.Name = "features" EnumValueOptions_DebugRedact_field_name protoreflect.Name = "debug_redact" + EnumValueOptions_FeatureSupport_field_name protoreflect.Name = "feature_support" EnumValueOptions_UninterpretedOption_field_name protoreflect.Name = "uninterpreted_option" EnumValueOptions_Deprecated_field_fullname protoreflect.FullName = "google.protobuf.EnumValueOptions.deprecated" EnumValueOptions_Features_field_fullname protoreflect.FullName = "google.protobuf.EnumValueOptions.features" EnumValueOptions_DebugRedact_field_fullname protoreflect.FullName = "google.protobuf.EnumValueOptions.debug_redact" + EnumValueOptions_FeatureSupport_field_fullname protoreflect.FullName = "google.protobuf.EnumValueOptions.feature_support" EnumValueOptions_UninterpretedOption_field_fullname protoreflect.FullName = "google.protobuf.EnumValueOptions.uninterpreted_option" ) @@ -842,6 +875,7 @@ const ( EnumValueOptions_Deprecated_field_number protoreflect.FieldNumber = 1 EnumValueOptions_Features_field_number protoreflect.FieldNumber = 2 EnumValueOptions_DebugRedact_field_number protoreflect.FieldNumber = 3 + EnumValueOptions_FeatureSupport_field_number protoreflect.FieldNumber = 4 EnumValueOptions_UninterpretedOption_field_number protoreflect.FieldNumber = 999 ) @@ -1110,17 +1144,20 @@ const ( // Field names for google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault. const ( - FeatureSetDefaults_FeatureSetEditionDefault_Edition_field_name protoreflect.Name = "edition" - FeatureSetDefaults_FeatureSetEditionDefault_Features_field_name protoreflect.Name = "features" + FeatureSetDefaults_FeatureSetEditionDefault_Edition_field_name protoreflect.Name = "edition" + FeatureSetDefaults_FeatureSetEditionDefault_OverridableFeatures_field_name protoreflect.Name = "overridable_features" + FeatureSetDefaults_FeatureSetEditionDefault_FixedFeatures_field_name protoreflect.Name = "fixed_features" - FeatureSetDefaults_FeatureSetEditionDefault_Edition_field_fullname protoreflect.FullName = "google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.edition" - FeatureSetDefaults_FeatureSetEditionDefault_Features_field_fullname protoreflect.FullName = "google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.features" + FeatureSetDefaults_FeatureSetEditionDefault_Edition_field_fullname protoreflect.FullName = "google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.edition" + FeatureSetDefaults_FeatureSetEditionDefault_OverridableFeatures_field_fullname protoreflect.FullName = "google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.overridable_features" + FeatureSetDefaults_FeatureSetEditionDefault_FixedFeatures_field_fullname protoreflect.FullName = "google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.fixed_features" ) // Field numbers for google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault. const ( - FeatureSetDefaults_FeatureSetEditionDefault_Edition_field_number protoreflect.FieldNumber = 3 - FeatureSetDefaults_FeatureSetEditionDefault_Features_field_number protoreflect.FieldNumber = 2 + FeatureSetDefaults_FeatureSetEditionDefault_Edition_field_number protoreflect.FieldNumber = 3 + FeatureSetDefaults_FeatureSetEditionDefault_OverridableFeatures_field_number protoreflect.FieldNumber = 4 + FeatureSetDefaults_FeatureSetEditionDefault_FixedFeatures_field_number protoreflect.FieldNumber = 5 ) // Names for google.protobuf.SourceCodeInfo. diff --git a/vendor/google.golang.org/protobuf/internal/genid/go_features_gen.go b/vendor/google.golang.org/protobuf/internal/genid/go_features_gen.go index fd9015e8e..9a652a2b4 100644 --- a/vendor/google.golang.org/protobuf/internal/genid/go_features_gen.go +++ b/vendor/google.golang.org/protobuf/internal/genid/go_features_gen.go @@ -10,7 +10,7 @@ import ( protoreflect "google.golang.org/protobuf/reflect/protoreflect" ) -const File_reflect_protodesc_proto_go_features_proto = "reflect/protodesc/proto/go_features.proto" +const File_google_protobuf_go_features_proto = "google/protobuf/go_features.proto" // Names for google.protobuf.GoFeatures. const ( diff --git a/vendor/google.golang.org/protobuf/internal/impl/api_export.go b/vendor/google.golang.org/protobuf/internal/impl/api_export.go index a371f98de..5d5771c2e 100644 --- a/vendor/google.golang.org/protobuf/internal/impl/api_export.go +++ b/vendor/google.golang.org/protobuf/internal/impl/api_export.go @@ -22,13 +22,13 @@ type Export struct{} // NewError formats a string according to the format specifier and arguments and // returns an error that has a "proto" prefix. -func (Export) NewError(f string, x ...interface{}) error { +func (Export) NewError(f string, x ...any) error { return errors.New(f, x...) } // enum is any enum type generated by protoc-gen-go // and must be a named int32 type. -type enum = interface{} +type enum = any // EnumOf returns the protoreflect.Enum interface over e. // It returns nil if e is nil. @@ -81,7 +81,7 @@ func (Export) EnumStringOf(ed protoreflect.EnumDescriptor, n protoreflect.EnumNu // message is any message type generated by protoc-gen-go // and must be a pointer to a named struct type. -type message = interface{} +type message = any // legacyMessageWrapper wraps a v2 message as a v1 message. type legacyMessageWrapper struct{ m protoreflect.ProtoMessage } diff --git a/vendor/google.golang.org/protobuf/internal/impl/checkinit.go b/vendor/google.golang.org/protobuf/internal/impl/checkinit.go index bff041edc..f29e6a8fa 100644 --- a/vendor/google.golang.org/protobuf/internal/impl/checkinit.go +++ b/vendor/google.golang.org/protobuf/internal/impl/checkinit.go @@ -68,7 +68,7 @@ func (mi *MessageInfo) isInitExtensions(ext *map[int32]ExtensionField) error { } for _, x := range *ext { ei := getExtensionFieldInfo(x.Type()) - if ei.funcs.isInit == nil { + if ei.funcs.isInit == nil || x.isUnexpandedLazy() { continue } v := x.Value() diff --git a/vendor/google.golang.org/protobuf/internal/impl/codec_extension.go b/vendor/google.golang.org/protobuf/internal/impl/codec_extension.go index 2b8f122c2..4bb0a7a20 100644 --- a/vendor/google.golang.org/protobuf/internal/impl/codec_extension.go +++ b/vendor/google.golang.org/protobuf/internal/impl/codec_extension.go @@ -99,6 +99,28 @@ func (f *ExtensionField) canLazy(xt protoreflect.ExtensionType) bool { return false } +// isUnexpandedLazy returns true if the ExensionField is lazy and not +// yet expanded, which means it's present and already checked for +// initialized required fields. +func (f *ExtensionField) isUnexpandedLazy() bool { + return f.lazy != nil && atomic.LoadUint32(&f.lazy.atomicOnce) == 0 +} + +// lazyBuffer retrieves the buffer for a lazy extension if it's not yet expanded. +// +// The returned buffer has to be kept over whatever operation we're planning, +// as re-retrieving it will fail after the message is lazily decoded. +func (f *ExtensionField) lazyBuffer() []byte { + // This function might be in the critical path, so check the atomic without + // taking a look first, then only take the lock if needed. + if !f.isUnexpandedLazy() { + return nil + } + f.lazy.mu.Lock() + defer f.lazy.mu.Unlock() + return f.lazy.b +} + func (f *ExtensionField) lazyInit() { f.lazy.mu.Lock() defer f.lazy.mu.Unlock() diff --git a/vendor/google.golang.org/protobuf/internal/impl/codec_field.go b/vendor/google.golang.org/protobuf/internal/impl/codec_field.go index 3fadd241e..78ee47e44 100644 --- a/vendor/google.golang.org/protobuf/internal/impl/codec_field.go +++ b/vendor/google.golang.org/protobuf/internal/impl/codec_field.go @@ -233,9 +233,15 @@ func sizeMessageInfo(p pointer, f *coderFieldInfo, opts marshalOptions) int { } func appendMessageInfo(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { + calculatedSize := f.mi.sizePointer(p.Elem(), opts) b = protowire.AppendVarint(b, f.wiretag) - b = protowire.AppendVarint(b, uint64(f.mi.sizePointer(p.Elem(), opts))) - return f.mi.marshalAppendPointer(b, p.Elem(), opts) + b = protowire.AppendVarint(b, uint64(calculatedSize)) + before := len(b) + b, err := f.mi.marshalAppendPointer(b, p.Elem(), opts) + if measuredSize := len(b) - before; calculatedSize != measuredSize && err == nil { + return nil, errors.MismatchedSizeCalculation(calculatedSize, measuredSize) + } + return b, err } func consumeMessageInfo(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { @@ -262,14 +268,21 @@ func isInitMessageInfo(p pointer, f *coderFieldInfo) error { return f.mi.checkInitializedPointer(p.Elem()) } -func sizeMessage(m proto.Message, tagsize int, _ marshalOptions) int { - return protowire.SizeBytes(proto.Size(m)) + tagsize +func sizeMessage(m proto.Message, tagsize int, opts marshalOptions) int { + return protowire.SizeBytes(opts.Options().Size(m)) + tagsize } func appendMessage(b []byte, m proto.Message, wiretag uint64, opts marshalOptions) ([]byte, error) { + mopts := opts.Options() + calculatedSize := mopts.Size(m) b = protowire.AppendVarint(b, wiretag) - b = protowire.AppendVarint(b, uint64(proto.Size(m))) - return opts.Options().MarshalAppend(b, m) + b = protowire.AppendVarint(b, uint64(calculatedSize)) + before := len(b) + b, err := mopts.MarshalAppend(b, m) + if measuredSize := len(b) - before; calculatedSize != measuredSize && err == nil { + return nil, errors.MismatchedSizeCalculation(calculatedSize, measuredSize) + } + return b, err } func consumeMessage(b []byte, m proto.Message, wtyp protowire.Type, opts unmarshalOptions) (out unmarshalOutput, err error) { @@ -405,8 +418,8 @@ func consumeGroupType(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInf return f.mi.unmarshalPointer(b, p.Elem(), f.num, opts) } -func sizeGroup(m proto.Message, tagsize int, _ marshalOptions) int { - return 2*tagsize + proto.Size(m) +func sizeGroup(m proto.Message, tagsize int, opts marshalOptions) int { + return 2*tagsize + opts.Options().Size(m) } func appendGroup(b []byte, m proto.Message, wiretag uint64, opts marshalOptions) ([]byte, error) { @@ -482,10 +495,14 @@ func appendMessageSliceInfo(b []byte, p pointer, f *coderFieldInfo, opts marshal b = protowire.AppendVarint(b, f.wiretag) siz := f.mi.sizePointer(v, opts) b = protowire.AppendVarint(b, uint64(siz)) + before := len(b) b, err = f.mi.marshalAppendPointer(b, v, opts) if err != nil { return b, err } + if measuredSize := len(b) - before; siz != measuredSize { + return nil, errors.MismatchedSizeCalculation(siz, measuredSize) + } } return b, nil } @@ -520,28 +537,34 @@ func isInitMessageSliceInfo(p pointer, f *coderFieldInfo) error { return nil } -func sizeMessageSlice(p pointer, goType reflect.Type, tagsize int, _ marshalOptions) int { +func sizeMessageSlice(p pointer, goType reflect.Type, tagsize int, opts marshalOptions) int { + mopts := opts.Options() s := p.PointerSlice() n := 0 for _, v := range s { m := asMessage(v.AsValueOf(goType.Elem())) - n += protowire.SizeBytes(proto.Size(m)) + tagsize + n += protowire.SizeBytes(mopts.Size(m)) + tagsize } return n } func appendMessageSlice(b []byte, p pointer, wiretag uint64, goType reflect.Type, opts marshalOptions) ([]byte, error) { + mopts := opts.Options() s := p.PointerSlice() var err error for _, v := range s { m := asMessage(v.AsValueOf(goType.Elem())) b = protowire.AppendVarint(b, wiretag) - siz := proto.Size(m) + siz := mopts.Size(m) b = protowire.AppendVarint(b, uint64(siz)) - b, err = opts.Options().MarshalAppend(b, m) + before := len(b) + b, err = mopts.MarshalAppend(b, m) if err != nil { return b, err } + if measuredSize := len(b) - before; siz != measuredSize { + return nil, errors.MismatchedSizeCalculation(siz, measuredSize) + } } return b, nil } @@ -582,11 +605,12 @@ func isInitMessageSlice(p pointer, goType reflect.Type) error { // Slices of messages func sizeMessageSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) int { + mopts := opts.Options() list := listv.List() n := 0 for i, llen := 0, list.Len(); i < llen; i++ { m := list.Get(i).Message().Interface() - n += protowire.SizeBytes(proto.Size(m)) + tagsize + n += protowire.SizeBytes(mopts.Size(m)) + tagsize } return n } @@ -597,13 +621,17 @@ func appendMessageSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, for i, llen := 0, list.Len(); i < llen; i++ { m := list.Get(i).Message().Interface() b = protowire.AppendVarint(b, wiretag) - siz := proto.Size(m) + siz := mopts.Size(m) b = protowire.AppendVarint(b, uint64(siz)) + before := len(b) var err error b, err = mopts.MarshalAppend(b, m) if err != nil { return b, err } + if measuredSize := len(b) - before; siz != measuredSize { + return nil, errors.MismatchedSizeCalculation(siz, measuredSize) + } } return b, nil } @@ -651,11 +679,12 @@ var coderMessageSliceValue = valueCoderFuncs{ } func sizeGroupSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) int { + mopts := opts.Options() list := listv.List() n := 0 for i, llen := 0, list.Len(); i < llen; i++ { m := list.Get(i).Message().Interface() - n += 2*tagsize + proto.Size(m) + n += 2*tagsize + mopts.Size(m) } return n } @@ -738,12 +767,13 @@ func makeGroupSliceFieldCoder(fd protoreflect.FieldDescriptor, ft reflect.Type) } } -func sizeGroupSlice(p pointer, messageType reflect.Type, tagsize int, _ marshalOptions) int { +func sizeGroupSlice(p pointer, messageType reflect.Type, tagsize int, opts marshalOptions) int { + mopts := opts.Options() s := p.PointerSlice() n := 0 for _, v := range s { m := asMessage(v.AsValueOf(messageType.Elem())) - n += 2*tagsize + proto.Size(m) + n += 2*tagsize + mopts.Size(m) } return n } diff --git a/vendor/google.golang.org/protobuf/internal/impl/codec_map.go b/vendor/google.golang.org/protobuf/internal/impl/codec_map.go index 111b9d16f..fb35f0bae 100644 --- a/vendor/google.golang.org/protobuf/internal/impl/codec_map.go +++ b/vendor/google.golang.org/protobuf/internal/impl/codec_map.go @@ -9,6 +9,7 @@ import ( "sort" "google.golang.org/protobuf/encoding/protowire" + "google.golang.org/protobuf/internal/errors" "google.golang.org/protobuf/internal/genid" "google.golang.org/protobuf/reflect/protoreflect" ) @@ -240,11 +241,16 @@ func appendMapItem(b []byte, keyrv, valrv reflect.Value, mapi *mapInfo, f *coder size += mapi.keyFuncs.size(key.Value(), mapKeyTagSize, opts) size += mapi.valFuncs.size(val, mapValTagSize, opts) b = protowire.AppendVarint(b, uint64(size)) + before := len(b) b, err := mapi.keyFuncs.marshal(b, key.Value(), mapi.keyWiretag, opts) if err != nil { return nil, err } - return mapi.valFuncs.marshal(b, val, mapi.valWiretag, opts) + b, err = mapi.valFuncs.marshal(b, val, mapi.valWiretag, opts) + if measuredSize := len(b) - before; size != measuredSize && err == nil { + return nil, errors.MismatchedSizeCalculation(size, measuredSize) + } + return b, err } else { key := mapi.conv.keyConv.PBValueOf(keyrv).MapKey() val := pointerOfValue(valrv) @@ -259,7 +265,12 @@ func appendMapItem(b []byte, keyrv, valrv reflect.Value, mapi *mapInfo, f *coder } b = protowire.AppendVarint(b, mapi.valWiretag) b = protowire.AppendVarint(b, uint64(valSize)) - return f.mi.marshalAppendPointer(b, val, opts) + before := len(b) + b, err = f.mi.marshalAppendPointer(b, val, opts) + if measuredSize := len(b) - before; valSize != measuredSize && err == nil { + return nil, errors.MismatchedSizeCalculation(valSize, measuredSize) + } + return b, err } } diff --git a/vendor/google.golang.org/protobuf/internal/impl/codec_messageset.go b/vendor/google.golang.org/protobuf/internal/impl/codec_messageset.go index b7a23faf1..7a16ec13d 100644 --- a/vendor/google.golang.org/protobuf/internal/impl/codec_messageset.go +++ b/vendor/google.golang.org/protobuf/internal/impl/codec_messageset.go @@ -26,6 +26,15 @@ func sizeMessageSet(mi *MessageInfo, p pointer, opts marshalOptions) (size int) } num, _ := protowire.DecodeTag(xi.wiretag) size += messageset.SizeField(num) + if fullyLazyExtensions(opts) { + // Don't expand the extension, instead use the buffer to calculate size + if lb := x.lazyBuffer(); lb != nil { + // We got hold of the buffer, so it's still lazy. + // Don't count the tag size in the extension buffer, it's already added. + size += protowire.SizeTag(messageset.FieldMessage) + len(lb) - xi.tagsize + continue + } + } size += xi.funcs.size(x.Value(), protowire.SizeTag(messageset.FieldMessage), opts) } @@ -85,6 +94,19 @@ func marshalMessageSetField(mi *MessageInfo, b []byte, x ExtensionField, opts ma xi := getExtensionFieldInfo(x.Type()) num, _ := protowire.DecodeTag(xi.wiretag) b = messageset.AppendFieldStart(b, num) + + if fullyLazyExtensions(opts) { + // Don't expand the extension if it's still in wire format, instead use the buffer content. + if lb := x.lazyBuffer(); lb != nil { + // The tag inside the lazy buffer is a different tag (the extension + // number), but what we need here is the tag for FieldMessage: + b = protowire.AppendVarint(b, protowire.EncodeTag(messageset.FieldMessage, protowire.BytesType)) + b = append(b, lb[xi.tagsize:]...) + b = messageset.AppendFieldEnd(b) + return b, nil + } + } + b, err := xi.funcs.marshal(b, x.Value(), protowire.EncodeTag(messageset.FieldMessage, protowire.BytesType), opts) if err != nil { return b, err diff --git a/vendor/google.golang.org/protobuf/internal/impl/convert.go b/vendor/google.golang.org/protobuf/internal/impl/convert.go index 185ef2efa..e06ece55a 100644 --- a/vendor/google.golang.org/protobuf/internal/impl/convert.go +++ b/vendor/google.golang.org/protobuf/internal/impl/convert.go @@ -14,7 +14,7 @@ import ( // unwrapper unwraps the value to the underlying value. // This is implemented by List and Map. type unwrapper interface { - protoUnwrap() interface{} + protoUnwrap() any } // A Converter coverts to/from Go reflect.Value types and protobuf protoreflect.Value types. diff --git a/vendor/google.golang.org/protobuf/internal/impl/convert_list.go b/vendor/google.golang.org/protobuf/internal/impl/convert_list.go index f89136516..18cb96fd7 100644 --- a/vendor/google.golang.org/protobuf/internal/impl/convert_list.go +++ b/vendor/google.golang.org/protobuf/internal/impl/convert_list.go @@ -136,6 +136,6 @@ func (ls *listReflect) NewElement() protoreflect.Value { func (ls *listReflect) IsValid() bool { return !ls.v.IsNil() } -func (ls *listReflect) protoUnwrap() interface{} { +func (ls *listReflect) protoUnwrap() any { return ls.v.Interface() } diff --git a/vendor/google.golang.org/protobuf/internal/impl/convert_map.go b/vendor/google.golang.org/protobuf/internal/impl/convert_map.go index f30b0a057..304244a65 100644 --- a/vendor/google.golang.org/protobuf/internal/impl/convert_map.go +++ b/vendor/google.golang.org/protobuf/internal/impl/convert_map.go @@ -116,6 +116,6 @@ func (ms *mapReflect) NewValue() protoreflect.Value { func (ms *mapReflect) IsValid() bool { return !ms.v.IsNil() } -func (ms *mapReflect) protoUnwrap() interface{} { +func (ms *mapReflect) protoUnwrap() any { return ms.v.Interface() } diff --git a/vendor/google.golang.org/protobuf/internal/impl/encode.go b/vendor/google.golang.org/protobuf/internal/impl/encode.go index 845c67d6e..febd21224 100644 --- a/vendor/google.golang.org/protobuf/internal/impl/encode.go +++ b/vendor/google.golang.org/protobuf/internal/impl/encode.go @@ -49,8 +49,11 @@ func (mi *MessageInfo) sizePointer(p pointer, opts marshalOptions) (size int) { return 0 } if opts.UseCachedSize() && mi.sizecacheOffset.IsValid() { - if size := atomic.LoadInt32(p.Apply(mi.sizecacheOffset).Int32()); size >= 0 { - return int(size) + // The size cache contains the size + 1, to allow the + // zero value to be invalid, while also allowing for a + // 0 size to be cached. + if size := atomic.LoadInt32(p.Apply(mi.sizecacheOffset).Int32()); size > 0 { + return int(size - 1) } } return mi.sizePointerSlow(p, opts) @@ -60,7 +63,7 @@ func (mi *MessageInfo) sizePointerSlow(p pointer, opts marshalOptions) (size int if flags.ProtoLegacy && mi.isMessageSet { size = sizeMessageSet(mi, p, opts) if mi.sizecacheOffset.IsValid() { - atomic.StoreInt32(p.Apply(mi.sizecacheOffset).Int32(), int32(size)) + atomic.StoreInt32(p.Apply(mi.sizecacheOffset).Int32(), int32(size+1)) } return size } @@ -84,13 +87,16 @@ func (mi *MessageInfo) sizePointerSlow(p pointer, opts marshalOptions) (size int } } if mi.sizecacheOffset.IsValid() { - if size > math.MaxInt32 { + if size > (math.MaxInt32 - 1) { // The size is too large for the int32 sizecache field. // We will need to recompute the size when encoding; // unfortunately expensive, but better than invalid output. - atomic.StoreInt32(p.Apply(mi.sizecacheOffset).Int32(), -1) + atomic.StoreInt32(p.Apply(mi.sizecacheOffset).Int32(), 0) } else { - atomic.StoreInt32(p.Apply(mi.sizecacheOffset).Int32(), int32(size)) + // The size cache contains the size + 1, to allow the + // zero value to be invalid, while also allowing for a + // 0 size to be cached. + atomic.StoreInt32(p.Apply(mi.sizecacheOffset).Int32(), int32(size+1)) } } return size @@ -149,6 +155,14 @@ func (mi *MessageInfo) marshalAppendPointer(b []byte, p pointer, opts marshalOpt return b, nil } +// fullyLazyExtensions returns true if we should attempt to keep extensions lazy over size and marshal. +func fullyLazyExtensions(opts marshalOptions) bool { + // When deterministic marshaling is requested, force an unmarshal for lazy + // extensions to produce a deterministic result, instead of passing through + // bytes lazily that may or may not match what Go Protobuf would produce. + return opts.flags&piface.MarshalDeterministic == 0 +} + func (mi *MessageInfo) sizeExtensions(ext *map[int32]ExtensionField, opts marshalOptions) (n int) { if ext == nil { return 0 @@ -158,6 +172,14 @@ func (mi *MessageInfo) sizeExtensions(ext *map[int32]ExtensionField, opts marsha if xi.funcs.size == nil { continue } + if fullyLazyExtensions(opts) { + // Don't expand the extension, instead use the buffer to calculate size + if lb := x.lazyBuffer(); lb != nil { + // We got hold of the buffer, so it's still lazy. + n += len(lb) + continue + } + } n += xi.funcs.size(x.Value(), xi.tagsize, opts) } return n @@ -176,6 +198,13 @@ func (mi *MessageInfo) appendExtensions(b []byte, ext *map[int32]ExtensionField, var err error for _, x := range *ext { xi := getExtensionFieldInfo(x.Type()) + if fullyLazyExtensions(opts) { + // Don't expand the extension if it's still in wire format, instead use the buffer content. + if lb := x.lazyBuffer(); lb != nil { + b = append(b, lb...) + continue + } + } b, err = xi.funcs.marshal(b, x.Value(), xi.wiretag, opts) } return b, err @@ -191,6 +220,13 @@ func (mi *MessageInfo) appendExtensions(b []byte, ext *map[int32]ExtensionField, for _, k := range keys { x := (*ext)[int32(k)] xi := getExtensionFieldInfo(x.Type()) + if fullyLazyExtensions(opts) { + // Don't expand the extension if it's still in wire format, instead use the buffer content. + if lb := x.lazyBuffer(); lb != nil { + b = append(b, lb...) + continue + } + } b, err = xi.funcs.marshal(b, x.Value(), xi.wiretag, opts) if err != nil { return b, err diff --git a/vendor/google.golang.org/protobuf/internal/impl/extension.go b/vendor/google.golang.org/protobuf/internal/impl/extension.go index cb25b0bae..e31249f64 100644 --- a/vendor/google.golang.org/protobuf/internal/impl/extension.go +++ b/vendor/google.golang.org/protobuf/internal/impl/extension.go @@ -53,7 +53,7 @@ type ExtensionInfo struct { // type returned by InterfaceOf may not be identical. // // Deprecated: Use InterfaceOf(xt.Zero()) instead. - ExtensionType interface{} + ExtensionType any // Field is the field number of the extension. // @@ -95,16 +95,16 @@ func (xi *ExtensionInfo) New() protoreflect.Value { func (xi *ExtensionInfo) Zero() protoreflect.Value { return xi.lazyInit().Zero() } -func (xi *ExtensionInfo) ValueOf(v interface{}) protoreflect.Value { +func (xi *ExtensionInfo) ValueOf(v any) protoreflect.Value { return xi.lazyInit().PBValueOf(reflect.ValueOf(v)) } -func (xi *ExtensionInfo) InterfaceOf(v protoreflect.Value) interface{} { +func (xi *ExtensionInfo) InterfaceOf(v protoreflect.Value) any { return xi.lazyInit().GoValueOf(v).Interface() } func (xi *ExtensionInfo) IsValidValue(v protoreflect.Value) bool { return xi.lazyInit().IsValidPB(v) } -func (xi *ExtensionInfo) IsValidInterface(v interface{}) bool { +func (xi *ExtensionInfo) IsValidInterface(v any) bool { return xi.lazyInit().IsValidGo(reflect.ValueOf(v)) } func (xi *ExtensionInfo) TypeDescriptor() protoreflect.ExtensionTypeDescriptor { diff --git a/vendor/google.golang.org/protobuf/internal/impl/legacy_enum.go b/vendor/google.golang.org/protobuf/internal/impl/legacy_enum.go index c2a803bb2..81b2b1a76 100644 --- a/vendor/google.golang.org/protobuf/internal/impl/legacy_enum.go +++ b/vendor/google.golang.org/protobuf/internal/impl/legacy_enum.go @@ -97,7 +97,7 @@ func (e *legacyEnumWrapper) Number() protoreflect.EnumNumber { func (e *legacyEnumWrapper) ProtoReflect() protoreflect.Enum { return e } -func (e *legacyEnumWrapper) protoUnwrap() interface{} { +func (e *legacyEnumWrapper) protoUnwrap() any { v := reflect.New(e.goTyp).Elem() v.SetInt(int64(e.num)) return v.Interface() @@ -167,6 +167,7 @@ func aberrantLoadEnumDesc(t reflect.Type) protoreflect.EnumDescriptor { ed := &filedesc.Enum{L2: new(filedesc.EnumL2)} ed.L0.FullName = AberrantDeriveFullName(t) // e.g., github_com.user.repo.MyEnum ed.L0.ParentFile = filedesc.SurrogateProto3 + ed.L1.EditionFeatures = ed.L0.ParentFile.L1.EditionFeatures ed.L2.Values.List = append(ed.L2.Values.List, filedesc.EnumValue{}) // TODO: Use the presence of a UnmarshalJSON method to determine proto2? diff --git a/vendor/google.golang.org/protobuf/internal/impl/legacy_extension.go b/vendor/google.golang.org/protobuf/internal/impl/legacy_extension.go index 87b30d050..6e8677ee6 100644 --- a/vendor/google.golang.org/protobuf/internal/impl/legacy_extension.go +++ b/vendor/google.golang.org/protobuf/internal/impl/legacy_extension.go @@ -118,7 +118,7 @@ func (xi *ExtensionInfo) initFromLegacy() { xd.L1.Number = protoreflect.FieldNumber(xi.Field) xd.L1.Cardinality = fd.L1.Cardinality xd.L1.Kind = fd.L1.Kind - xd.L2.IsPacked = fd.L1.IsPacked + xd.L1.EditionFeatures = fd.L1.EditionFeatures xd.L2.Default = fd.L1.Default xd.L1.Extendee = Export{}.MessageDescriptorOf(xi.ExtendedType) xd.L2.Enum = ed diff --git a/vendor/google.golang.org/protobuf/internal/impl/legacy_file.go b/vendor/google.golang.org/protobuf/internal/impl/legacy_file.go index 9ab091086..b649f1124 100644 --- a/vendor/google.golang.org/protobuf/internal/impl/legacy_file.go +++ b/vendor/google.golang.org/protobuf/internal/impl/legacy_file.go @@ -7,7 +7,7 @@ package impl import ( "bytes" "compress/gzip" - "io/ioutil" + "io" "sync" "google.golang.org/protobuf/internal/filedesc" @@ -51,7 +51,7 @@ func legacyLoadFileDesc(b []byte) protoreflect.FileDescriptor { if err != nil { panic(err) } - b2, err := ioutil.ReadAll(zr) + b2, err := io.ReadAll(zr) if err != nil { panic(err) } diff --git a/vendor/google.golang.org/protobuf/internal/impl/legacy_message.go b/vendor/google.golang.org/protobuf/internal/impl/legacy_message.go index 2ab2c6297..bf0b6049b 100644 --- a/vendor/google.golang.org/protobuf/internal/impl/legacy_message.go +++ b/vendor/google.golang.org/protobuf/internal/impl/legacy_message.go @@ -204,6 +204,7 @@ func aberrantLoadMessageDescReentrant(t reflect.Type, name protoreflect.FullName } } + md.L1.EditionFeatures = md.L0.ParentFile.L1.EditionFeatures // Obtain a list of oneof wrapper types. var oneofWrappers []reflect.Type methods := make([]reflect.Method, 0, 2) @@ -215,7 +216,7 @@ func aberrantLoadMessageDescReentrant(t reflect.Type, name protoreflect.FullName } for _, fn := range methods { for _, v := range fn.Func.Call([]reflect.Value{reflect.Zero(fn.Type.In(0))}) { - if vs, ok := v.Interface().([]interface{}); ok { + if vs, ok := v.Interface().([]any); ok { for _, v := range vs { oneofWrappers = append(oneofWrappers, reflect.TypeOf(v)) } @@ -250,6 +251,7 @@ func aberrantLoadMessageDescReentrant(t reflect.Type, name protoreflect.FullName od := &md.L2.Oneofs.List[n] od.L0.FullName = md.FullName().Append(protoreflect.Name(tag)) od.L0.ParentFile = md.L0.ParentFile + od.L1.EditionFeatures = md.L1.EditionFeatures od.L0.Parent = md od.L0.Index = n @@ -260,6 +262,7 @@ func aberrantLoadMessageDescReentrant(t reflect.Type, name protoreflect.FullName aberrantAppendField(md, f.Type, tag, "", "") fd := &md.L2.Fields.List[len(md.L2.Fields.List)-1] fd.L1.ContainingOneof = od + fd.L1.EditionFeatures = od.L1.EditionFeatures od.L1.Fields.List = append(od.L1.Fields.List, fd) } } @@ -307,14 +310,14 @@ func aberrantAppendField(md *filedesc.Message, goType reflect.Type, tag, tagKey, fd.L0.Parent = md fd.L0.Index = n - if fd.L1.IsWeak || fd.L1.HasPacked { + if fd.L1.IsWeak || fd.L1.EditionFeatures.IsPacked { fd.L1.Options = func() protoreflect.ProtoMessage { opts := descopts.Field.ProtoReflect().New() if fd.L1.IsWeak { opts.Set(opts.Descriptor().Fields().ByName("weak"), protoreflect.ValueOfBool(true)) } - if fd.L1.HasPacked { - opts.Set(opts.Descriptor().Fields().ByName("packed"), protoreflect.ValueOfBool(fd.L1.IsPacked)) + if fd.L1.EditionFeatures.IsPacked { + opts.Set(opts.Descriptor().Fields().ByName("packed"), protoreflect.ValueOfBool(fd.L1.EditionFeatures.IsPacked)) } return opts.Interface() } @@ -344,6 +347,7 @@ func aberrantAppendField(md *filedesc.Message, goType reflect.Type, tag, tagKey, md2.L0.ParentFile = md.L0.ParentFile md2.L0.Parent = md md2.L0.Index = n + md2.L1.EditionFeatures = md.L1.EditionFeatures md2.L1.IsMapEntry = true md2.L2.Options = func() protoreflect.ProtoMessage { @@ -563,6 +567,6 @@ func (m aberrantMessage) IsValid() bool { func (m aberrantMessage) ProtoMethods() *protoiface.Methods { return aberrantProtoMethods } -func (m aberrantMessage) protoUnwrap() interface{} { +func (m aberrantMessage) protoUnwrap() any { return m.v.Interface() } diff --git a/vendor/google.golang.org/protobuf/internal/impl/message.go b/vendor/google.golang.org/protobuf/internal/impl/message.go index 629bacdce..019399d45 100644 --- a/vendor/google.golang.org/protobuf/internal/impl/message.go +++ b/vendor/google.golang.org/protobuf/internal/impl/message.go @@ -35,7 +35,7 @@ type MessageInfo struct { Exporter exporter // OneofWrappers is list of pointers to oneof wrapper struct types. - OneofWrappers []interface{} + OneofWrappers []any initMu sync.Mutex // protects all unexported fields initDone uint32 @@ -47,7 +47,7 @@ type MessageInfo struct { // exporter is a function that returns a reference to the ith field of v, // where v is a pointer to a struct. It returns nil if it does not support // exporting the requested field (e.g., already exported). -type exporter func(v interface{}, i int) interface{} +type exporter func(v any, i int) any // getMessageInfo returns the MessageInfo for any message type that // is generated by our implementation of protoc-gen-go (for v2 and on). @@ -201,7 +201,7 @@ fieldLoop: } for _, fn := range methods { for _, v := range fn.Func.Call([]reflect.Value{reflect.Zero(fn.Type.In(0))}) { - if vs, ok := v.Interface().([]interface{}); ok { + if vs, ok := v.Interface().([]any); ok { oneofWrappers = vs } } @@ -256,7 +256,7 @@ func (mi *MessageInfo) Message(i int) protoreflect.MessageType { type mapEntryType struct { desc protoreflect.MessageDescriptor - valType interface{} // zero value of enum or message type + valType any // zero value of enum or message type } func (mt mapEntryType) New() protoreflect.Message { diff --git a/vendor/google.golang.org/protobuf/internal/impl/message_reflect.go b/vendor/google.golang.org/protobuf/internal/impl/message_reflect.go index d9ea010be..ecb4623d7 100644 --- a/vendor/google.golang.org/protobuf/internal/impl/message_reflect.go +++ b/vendor/google.golang.org/protobuf/internal/impl/message_reflect.go @@ -20,7 +20,7 @@ type reflectMessageInfo struct { // fieldTypes contains the zero value of an enum or message field. // For lists, it contains the element type. // For maps, it contains the entry value type. - fieldTypes map[protoreflect.FieldNumber]interface{} + fieldTypes map[protoreflect.FieldNumber]any // denseFields is a subset of fields where: // 0 < fieldDesc.Number() < len(denseFields) @@ -28,7 +28,7 @@ type reflectMessageInfo struct { denseFields []*fieldInfo // rangeInfos is a list of all fields (not belonging to a oneof) and oneofs. - rangeInfos []interface{} // either *fieldInfo or *oneofInfo + rangeInfos []any // either *fieldInfo or *oneofInfo getUnknown func(pointer) protoreflect.RawFields setUnknown func(pointer, protoreflect.RawFields) @@ -224,7 +224,7 @@ func (mi *MessageInfo) makeFieldTypes(si structInfo) { } if ft != nil { if mi.fieldTypes == nil { - mi.fieldTypes = make(map[protoreflect.FieldNumber]interface{}) + mi.fieldTypes = make(map[protoreflect.FieldNumber]any) } mi.fieldTypes[fd.Number()] = reflect.Zero(ft).Interface() } @@ -247,39 +247,39 @@ func (m *extensionMap) Range(f func(protoreflect.FieldDescriptor, protoreflect.V } } } -func (m *extensionMap) Has(xt protoreflect.ExtensionType) (ok bool) { +func (m *extensionMap) Has(xd protoreflect.ExtensionTypeDescriptor) (ok bool) { if m == nil { return false } - xd := xt.TypeDescriptor() x, ok := (*m)[int32(xd.Number())] if !ok { return false } + if x.isUnexpandedLazy() { + // Avoid calling x.Value(), which triggers a lazy unmarshal. + return true + } switch { case xd.IsList(): return x.Value().List().Len() > 0 case xd.IsMap(): return x.Value().Map().Len() > 0 - case xd.Message() != nil: - return x.Value().Message().IsValid() } return true } -func (m *extensionMap) Clear(xt protoreflect.ExtensionType) { - delete(*m, int32(xt.TypeDescriptor().Number())) +func (m *extensionMap) Clear(xd protoreflect.ExtensionTypeDescriptor) { + delete(*m, int32(xd.Number())) } -func (m *extensionMap) Get(xt protoreflect.ExtensionType) protoreflect.Value { - xd := xt.TypeDescriptor() +func (m *extensionMap) Get(xd protoreflect.ExtensionTypeDescriptor) protoreflect.Value { if m != nil { if x, ok := (*m)[int32(xd.Number())]; ok { return x.Value() } } - return xt.Zero() + return xd.Type().Zero() } -func (m *extensionMap) Set(xt protoreflect.ExtensionType, v protoreflect.Value) { - xd := xt.TypeDescriptor() +func (m *extensionMap) Set(xd protoreflect.ExtensionTypeDescriptor, v protoreflect.Value) { + xt := xd.Type() isValid := true switch { case !xt.IsValidValue(v): @@ -292,7 +292,7 @@ func (m *extensionMap) Set(xt protoreflect.ExtensionType, v protoreflect.Value) isValid = v.Message().IsValid() } if !isValid { - panic(fmt.Sprintf("%v: assigning invalid value", xt.TypeDescriptor().FullName())) + panic(fmt.Sprintf("%v: assigning invalid value", xd.FullName())) } if *m == nil { @@ -302,16 +302,15 @@ func (m *extensionMap) Set(xt protoreflect.ExtensionType, v protoreflect.Value) x.Set(xt, v) (*m)[int32(xd.Number())] = x } -func (m *extensionMap) Mutable(xt protoreflect.ExtensionType) protoreflect.Value { - xd := xt.TypeDescriptor() +func (m *extensionMap) Mutable(xd protoreflect.ExtensionTypeDescriptor) protoreflect.Value { if xd.Kind() != protoreflect.MessageKind && xd.Kind() != protoreflect.GroupKind && !xd.IsList() && !xd.IsMap() { panic("invalid Mutable on field with non-composite type") } if x, ok := (*m)[int32(xd.Number())]; ok { return x.Value() } - v := xt.New() - m.Set(xt, v) + v := xd.Type().New() + m.Set(xd, v) return v } @@ -394,7 +393,7 @@ var ( // MessageOf returns a reflective view over a message. The input must be a // pointer to a named Go struct. If the provided type has a ProtoReflect method, // it must be implemented by calling this method. -func (mi *MessageInfo) MessageOf(m interface{}) protoreflect.Message { +func (mi *MessageInfo) MessageOf(m any) protoreflect.Message { if reflect.TypeOf(m) != mi.GoReflectType { panic(fmt.Sprintf("type mismatch: got %T, want %v", m, mi.GoReflectType)) } @@ -422,13 +421,13 @@ func (m *messageIfaceWrapper) Reset() { func (m *messageIfaceWrapper) ProtoReflect() protoreflect.Message { return (*messageReflectWrapper)(m) } -func (m *messageIfaceWrapper) protoUnwrap() interface{} { +func (m *messageIfaceWrapper) protoUnwrap() any { return m.p.AsIfaceOf(m.mi.GoReflectType.Elem()) } // checkField verifies that the provided field descriptor is valid. // Exactly one of the returned values is populated. -func (mi *MessageInfo) checkField(fd protoreflect.FieldDescriptor) (*fieldInfo, protoreflect.ExtensionType) { +func (mi *MessageInfo) checkField(fd protoreflect.FieldDescriptor) (*fieldInfo, protoreflect.ExtensionTypeDescriptor) { var fi *fieldInfo if n := fd.Number(); 0 < n && int(n) < len(mi.denseFields) { fi = mi.denseFields[n] @@ -457,7 +456,7 @@ func (mi *MessageInfo) checkField(fd protoreflect.FieldDescriptor) (*fieldInfo, if !ok { panic(fmt.Sprintf("extension %v does not implement protoreflect.ExtensionTypeDescriptor", fd.FullName())) } - return nil, xtd.Type() + return nil, xtd } panic(fmt.Sprintf("field %v is invalid", fd.FullName())) } diff --git a/vendor/google.golang.org/protobuf/internal/impl/message_reflect_gen.go b/vendor/google.golang.org/protobuf/internal/impl/message_reflect_gen.go index 741d6e5b6..99dc23c6f 100644 --- a/vendor/google.golang.org/protobuf/internal/impl/message_reflect_gen.go +++ b/vendor/google.golang.org/protobuf/internal/impl/message_reflect_gen.go @@ -23,12 +23,13 @@ func (m *messageState) New() protoreflect.Message { func (m *messageState) Interface() protoreflect.ProtoMessage { return m.protoUnwrap().(protoreflect.ProtoMessage) } -func (m *messageState) protoUnwrap() interface{} { +func (m *messageState) protoUnwrap() any { return m.pointer().AsIfaceOf(m.messageInfo().GoReflectType.Elem()) } func (m *messageState) ProtoMethods() *protoiface.Methods { - m.messageInfo().init() - return &m.messageInfo().methods + mi := m.messageInfo() + mi.init() + return &mi.methods } // ProtoMessageInfo is a pseudo-internal API for allowing the v1 code @@ -41,8 +42,9 @@ func (m *messageState) ProtoMessageInfo() *MessageInfo { } func (m *messageState) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { - m.messageInfo().init() - for _, ri := range m.messageInfo().rangeInfos { + mi := m.messageInfo() + mi.init() + for _, ri := range mi.rangeInfos { switch ri := ri.(type) { case *fieldInfo: if ri.has(m.pointer()) { @@ -52,77 +54,86 @@ func (m *messageState) Range(f func(protoreflect.FieldDescriptor, protoreflect.V } case *oneofInfo: if n := ri.which(m.pointer()); n > 0 { - fi := m.messageInfo().fields[n] + fi := mi.fields[n] if !f(fi.fieldDesc, fi.get(m.pointer())) { return } } } } - m.messageInfo().extensionMap(m.pointer()).Range(f) + mi.extensionMap(m.pointer()).Range(f) } func (m *messageState) Has(fd protoreflect.FieldDescriptor) bool { - m.messageInfo().init() - if fi, xt := m.messageInfo().checkField(fd); fi != nil { + mi := m.messageInfo() + mi.init() + if fi, xd := mi.checkField(fd); fi != nil { return fi.has(m.pointer()) } else { - return m.messageInfo().extensionMap(m.pointer()).Has(xt) + return mi.extensionMap(m.pointer()).Has(xd) } } func (m *messageState) Clear(fd protoreflect.FieldDescriptor) { - m.messageInfo().init() - if fi, xt := m.messageInfo().checkField(fd); fi != nil { + mi := m.messageInfo() + mi.init() + if fi, xd := mi.checkField(fd); fi != nil { fi.clear(m.pointer()) } else { - m.messageInfo().extensionMap(m.pointer()).Clear(xt) + mi.extensionMap(m.pointer()).Clear(xd) } } func (m *messageState) Get(fd protoreflect.FieldDescriptor) protoreflect.Value { - m.messageInfo().init() - if fi, xt := m.messageInfo().checkField(fd); fi != nil { + mi := m.messageInfo() + mi.init() + if fi, xd := mi.checkField(fd); fi != nil { return fi.get(m.pointer()) } else { - return m.messageInfo().extensionMap(m.pointer()).Get(xt) + return mi.extensionMap(m.pointer()).Get(xd) } } func (m *messageState) Set(fd protoreflect.FieldDescriptor, v protoreflect.Value) { - m.messageInfo().init() - if fi, xt := m.messageInfo().checkField(fd); fi != nil { + mi := m.messageInfo() + mi.init() + if fi, xd := mi.checkField(fd); fi != nil { fi.set(m.pointer(), v) } else { - m.messageInfo().extensionMap(m.pointer()).Set(xt, v) + mi.extensionMap(m.pointer()).Set(xd, v) } } func (m *messageState) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { - m.messageInfo().init() - if fi, xt := m.messageInfo().checkField(fd); fi != nil { + mi := m.messageInfo() + mi.init() + if fi, xd := mi.checkField(fd); fi != nil { return fi.mutable(m.pointer()) } else { - return m.messageInfo().extensionMap(m.pointer()).Mutable(xt) + return mi.extensionMap(m.pointer()).Mutable(xd) } } func (m *messageState) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { - m.messageInfo().init() - if fi, xt := m.messageInfo().checkField(fd); fi != nil { + mi := m.messageInfo() + mi.init() + if fi, xd := mi.checkField(fd); fi != nil { return fi.newField() } else { - return xt.New() + return xd.Type().New() } } func (m *messageState) WhichOneof(od protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { - m.messageInfo().init() - if oi := m.messageInfo().oneofs[od.Name()]; oi != nil && oi.oneofDesc == od { + mi := m.messageInfo() + mi.init() + if oi := mi.oneofs[od.Name()]; oi != nil && oi.oneofDesc == od { return od.Fields().ByNumber(oi.which(m.pointer())) } panic("invalid oneof descriptor " + string(od.FullName()) + " for message " + string(m.Descriptor().FullName())) } func (m *messageState) GetUnknown() protoreflect.RawFields { - m.messageInfo().init() - return m.messageInfo().getUnknown(m.pointer()) + mi := m.messageInfo() + mi.init() + return mi.getUnknown(m.pointer()) } func (m *messageState) SetUnknown(b protoreflect.RawFields) { - m.messageInfo().init() - m.messageInfo().setUnknown(m.pointer(), b) + mi := m.messageInfo() + mi.init() + mi.setUnknown(m.pointer(), b) } func (m *messageState) IsValid() bool { return !m.pointer().IsNil() @@ -143,12 +154,13 @@ func (m *messageReflectWrapper) Interface() protoreflect.ProtoMessage { } return (*messageIfaceWrapper)(m) } -func (m *messageReflectWrapper) protoUnwrap() interface{} { +func (m *messageReflectWrapper) protoUnwrap() any { return m.pointer().AsIfaceOf(m.messageInfo().GoReflectType.Elem()) } func (m *messageReflectWrapper) ProtoMethods() *protoiface.Methods { - m.messageInfo().init() - return &m.messageInfo().methods + mi := m.messageInfo() + mi.init() + return &mi.methods } // ProtoMessageInfo is a pseudo-internal API for allowing the v1 code @@ -161,8 +173,9 @@ func (m *messageReflectWrapper) ProtoMessageInfo() *MessageInfo { } func (m *messageReflectWrapper) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { - m.messageInfo().init() - for _, ri := range m.messageInfo().rangeInfos { + mi := m.messageInfo() + mi.init() + for _, ri := range mi.rangeInfos { switch ri := ri.(type) { case *fieldInfo: if ri.has(m.pointer()) { @@ -172,77 +185,86 @@ func (m *messageReflectWrapper) Range(f func(protoreflect.FieldDescriptor, proto } case *oneofInfo: if n := ri.which(m.pointer()); n > 0 { - fi := m.messageInfo().fields[n] + fi := mi.fields[n] if !f(fi.fieldDesc, fi.get(m.pointer())) { return } } } } - m.messageInfo().extensionMap(m.pointer()).Range(f) + mi.extensionMap(m.pointer()).Range(f) } func (m *messageReflectWrapper) Has(fd protoreflect.FieldDescriptor) bool { - m.messageInfo().init() - if fi, xt := m.messageInfo().checkField(fd); fi != nil { + mi := m.messageInfo() + mi.init() + if fi, xd := mi.checkField(fd); fi != nil { return fi.has(m.pointer()) } else { - return m.messageInfo().extensionMap(m.pointer()).Has(xt) + return mi.extensionMap(m.pointer()).Has(xd) } } func (m *messageReflectWrapper) Clear(fd protoreflect.FieldDescriptor) { - m.messageInfo().init() - if fi, xt := m.messageInfo().checkField(fd); fi != nil { + mi := m.messageInfo() + mi.init() + if fi, xd := mi.checkField(fd); fi != nil { fi.clear(m.pointer()) } else { - m.messageInfo().extensionMap(m.pointer()).Clear(xt) + mi.extensionMap(m.pointer()).Clear(xd) } } func (m *messageReflectWrapper) Get(fd protoreflect.FieldDescriptor) protoreflect.Value { - m.messageInfo().init() - if fi, xt := m.messageInfo().checkField(fd); fi != nil { + mi := m.messageInfo() + mi.init() + if fi, xd := mi.checkField(fd); fi != nil { return fi.get(m.pointer()) } else { - return m.messageInfo().extensionMap(m.pointer()).Get(xt) + return mi.extensionMap(m.pointer()).Get(xd) } } func (m *messageReflectWrapper) Set(fd protoreflect.FieldDescriptor, v protoreflect.Value) { - m.messageInfo().init() - if fi, xt := m.messageInfo().checkField(fd); fi != nil { + mi := m.messageInfo() + mi.init() + if fi, xd := mi.checkField(fd); fi != nil { fi.set(m.pointer(), v) } else { - m.messageInfo().extensionMap(m.pointer()).Set(xt, v) + mi.extensionMap(m.pointer()).Set(xd, v) } } func (m *messageReflectWrapper) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { - m.messageInfo().init() - if fi, xt := m.messageInfo().checkField(fd); fi != nil { + mi := m.messageInfo() + mi.init() + if fi, xd := mi.checkField(fd); fi != nil { return fi.mutable(m.pointer()) } else { - return m.messageInfo().extensionMap(m.pointer()).Mutable(xt) + return mi.extensionMap(m.pointer()).Mutable(xd) } } func (m *messageReflectWrapper) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { - m.messageInfo().init() - if fi, xt := m.messageInfo().checkField(fd); fi != nil { + mi := m.messageInfo() + mi.init() + if fi, xd := mi.checkField(fd); fi != nil { return fi.newField() } else { - return xt.New() + return xd.Type().New() } } func (m *messageReflectWrapper) WhichOneof(od protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { - m.messageInfo().init() - if oi := m.messageInfo().oneofs[od.Name()]; oi != nil && oi.oneofDesc == od { + mi := m.messageInfo() + mi.init() + if oi := mi.oneofs[od.Name()]; oi != nil && oi.oneofDesc == od { return od.Fields().ByNumber(oi.which(m.pointer())) } panic("invalid oneof descriptor " + string(od.FullName()) + " for message " + string(m.Descriptor().FullName())) } func (m *messageReflectWrapper) GetUnknown() protoreflect.RawFields { - m.messageInfo().init() - return m.messageInfo().getUnknown(m.pointer()) + mi := m.messageInfo() + mi.init() + return mi.getUnknown(m.pointer()) } func (m *messageReflectWrapper) SetUnknown(b protoreflect.RawFields) { - m.messageInfo().init() - m.messageInfo().setUnknown(m.pointer(), b) + mi := m.messageInfo() + mi.init() + mi.setUnknown(m.pointer(), b) } func (m *messageReflectWrapper) IsValid() bool { return !m.pointer().IsNil() diff --git a/vendor/google.golang.org/protobuf/internal/impl/pointer_reflect.go b/vendor/google.golang.org/protobuf/internal/impl/pointer_reflect.go index 517e94434..da685e8a2 100644 --- a/vendor/google.golang.org/protobuf/internal/impl/pointer_reflect.go +++ b/vendor/google.golang.org/protobuf/internal/impl/pointer_reflect.go @@ -16,7 +16,7 @@ import ( const UnsafeEnabled = false // Pointer is an opaque pointer type. -type Pointer interface{} +type Pointer any // offset represents the offset to a struct field, accessible from a pointer. // The offset is the field index into a struct. @@ -62,7 +62,7 @@ func pointerOfValue(v reflect.Value) pointer { } // pointerOfIface returns the pointer portion of an interface. -func pointerOfIface(v interface{}) pointer { +func pointerOfIface(v any) pointer { return pointer{v: reflect.ValueOf(v)} } @@ -93,7 +93,7 @@ func (p pointer) AsValueOf(t reflect.Type) reflect.Value { // AsIfaceOf treats p as a pointer to an object of type t and returns the value. // It is equivalent to p.AsValueOf(t).Interface() -func (p pointer) AsIfaceOf(t reflect.Type) interface{} { +func (p pointer) AsIfaceOf(t reflect.Type) any { return p.AsValueOf(t).Interface() } diff --git a/vendor/google.golang.org/protobuf/internal/impl/pointer_unsafe.go b/vendor/google.golang.org/protobuf/internal/impl/pointer_unsafe.go index 4b020e311..5f20ca5d8 100644 --- a/vendor/google.golang.org/protobuf/internal/impl/pointer_unsafe.go +++ b/vendor/google.golang.org/protobuf/internal/impl/pointer_unsafe.go @@ -50,7 +50,7 @@ func pointerOfValue(v reflect.Value) pointer { } // pointerOfIface returns the pointer portion of an interface. -func pointerOfIface(v interface{}) pointer { +func pointerOfIface(v any) pointer { type ifaceHeader struct { Type unsafe.Pointer Data unsafe.Pointer @@ -80,7 +80,7 @@ func (p pointer) AsValueOf(t reflect.Type) reflect.Value { // AsIfaceOf treats p as a pointer to an object of type t and returns the value. // It is equivalent to p.AsValueOf(t).Interface() -func (p pointer) AsIfaceOf(t reflect.Type) interface{} { +func (p pointer) AsIfaceOf(t reflect.Type) any { // TODO: Use tricky unsafe magic to directly create ifaceHeader. return p.AsValueOf(t).Interface() } diff --git a/vendor/google.golang.org/protobuf/internal/order/range.go b/vendor/google.golang.org/protobuf/internal/order/range.go index 1665a68e5..a1f09162d 100644 --- a/vendor/google.golang.org/protobuf/internal/order/range.go +++ b/vendor/google.golang.org/protobuf/internal/order/range.go @@ -18,7 +18,7 @@ type messageField struct { } var messageFieldPool = sync.Pool{ - New: func() interface{} { return new([]messageField) }, + New: func() any { return new([]messageField) }, } type ( @@ -69,7 +69,7 @@ type mapEntry struct { } var mapEntryPool = sync.Pool{ - New: func() interface{} { return new([]mapEntry) }, + New: func() any { return new([]mapEntry) }, } type ( diff --git a/vendor/google.golang.org/protobuf/internal/version/version.go b/vendor/google.golang.org/protobuf/internal/version/version.go index a50fcfb49..dbbf1f686 100644 --- a/vendor/google.golang.org/protobuf/internal/version/version.go +++ b/vendor/google.golang.org/protobuf/internal/version/version.go @@ -51,8 +51,8 @@ import ( // 10. Send out the CL for review and submit it. const ( Major = 1 - Minor = 33 - Patch = 0 + Minor = 34 + Patch = 2 PreRelease = "" ) diff --git a/vendor/google.golang.org/protobuf/proto/decode.go b/vendor/google.golang.org/protobuf/proto/decode.go index e5b03b567..d75a6534c 100644 --- a/vendor/google.golang.org/protobuf/proto/decode.go +++ b/vendor/google.golang.org/protobuf/proto/decode.go @@ -51,6 +51,8 @@ type UnmarshalOptions struct { // Unmarshal parses the wire-format message in b and places the result in m. // The provided message must be mutable (e.g., a non-nil pointer to a message). +// +// See the [UnmarshalOptions] type if you need more control. func Unmarshal(b []byte, m Message) error { _, err := UnmarshalOptions{RecursionLimit: protowire.DefaultRecursionLimit}.unmarshal(b, m.ProtoReflect()) return err diff --git a/vendor/google.golang.org/protobuf/proto/encode.go b/vendor/google.golang.org/protobuf/proto/encode.go index 4fed202f9..1f847bcc3 100644 --- a/vendor/google.golang.org/protobuf/proto/encode.go +++ b/vendor/google.golang.org/protobuf/proto/encode.go @@ -5,12 +5,17 @@ package proto import ( + "errors" + "fmt" + "google.golang.org/protobuf/encoding/protowire" "google.golang.org/protobuf/internal/encoding/messageset" "google.golang.org/protobuf/internal/order" "google.golang.org/protobuf/internal/pragma" "google.golang.org/protobuf/reflect/protoreflect" "google.golang.org/protobuf/runtime/protoiface" + + protoerrors "google.golang.org/protobuf/internal/errors" ) // MarshalOptions configures the marshaler. @@ -70,7 +75,32 @@ type MarshalOptions struct { UseCachedSize bool } +// flags turns the specified MarshalOptions (user-facing) into +// protoiface.MarshalInputFlags (used internally by the marshaler). +// +// See impl.marshalOptions.Options for the inverse operation. +func (o MarshalOptions) flags() protoiface.MarshalInputFlags { + var flags protoiface.MarshalInputFlags + + // Note: o.AllowPartial is always forced to true by MarshalOptions.marshal, + // which is why it is not a part of MarshalInputFlags. + + if o.Deterministic { + flags |= protoiface.MarshalDeterministic + } + + if o.UseCachedSize { + flags |= protoiface.MarshalUseCachedSize + } + + return flags +} + // Marshal returns the wire-format encoding of m. +// +// This is the most common entry point for encoding a Protobuf message. +// +// See the [MarshalOptions] type if you need more control. func Marshal(m Message) ([]byte, error) { // Treat nil message interface as an empty message; nothing to output. if m == nil { @@ -116,6 +146,9 @@ func emptyBytesForMessage(m Message) []byte { // MarshalAppend appends the wire-format encoding of m to b, // returning the result. +// +// This is a less common entry point than [Marshal], which is only needed if you +// need to supply your own buffers for performance reasons. func (o MarshalOptions) MarshalAppend(b []byte, m Message) ([]byte, error) { // Treat nil message interface as an empty message; nothing to append. if m == nil { @@ -145,12 +178,7 @@ func (o MarshalOptions) marshal(b []byte, m protoreflect.Message) (out protoifac in := protoiface.MarshalInput{ Message: m, Buf: b, - } - if o.Deterministic { - in.Flags |= protoiface.MarshalDeterministic - } - if o.UseCachedSize { - in.Flags |= protoiface.MarshalUseCachedSize + Flags: o.flags(), } if methods.Size != nil { sout := methods.Size(protoiface.SizeInput{ @@ -168,6 +196,10 @@ func (o MarshalOptions) marshal(b []byte, m protoreflect.Message) (out protoifac out.Buf, err = o.marshalMessageSlow(b, m) } if err != nil { + var mismatch *protoerrors.SizeMismatchError + if errors.As(err, &mismatch) { + return out, fmt.Errorf("marshaling %s: %v", string(m.Descriptor().FullName()), err) + } return out, err } if allowPartial { diff --git a/vendor/google.golang.org/protobuf/proto/extension.go b/vendor/google.golang.org/protobuf/proto/extension.go index 17899a3a7..d248f2928 100644 --- a/vendor/google.golang.org/protobuf/proto/extension.go +++ b/vendor/google.golang.org/protobuf/proto/extension.go @@ -11,18 +11,21 @@ import ( // HasExtension reports whether an extension field is populated. // It returns false if m is invalid or if xt does not extend m. func HasExtension(m Message, xt protoreflect.ExtensionType) bool { - // Treat nil message interface as an empty message; no populated fields. - if m == nil { + // Treat nil message interface or descriptor as an empty message; no populated + // fields. + if m == nil || xt == nil { return false } // As a special-case, we reports invalid or mismatching descriptors // as always not being populated (since they aren't). - if xt == nil || m.ProtoReflect().Descriptor() != xt.TypeDescriptor().ContainingMessage() { + mr := m.ProtoReflect() + xd := xt.TypeDescriptor() + if mr.Descriptor() != xd.ContainingMessage() { return false } - return m.ProtoReflect().Has(xt.TypeDescriptor()) + return mr.Has(xd) } // ClearExtension clears an extension field such that subsequent @@ -36,7 +39,7 @@ func ClearExtension(m Message, xt protoreflect.ExtensionType) { // If the field is unpopulated, it returns the default value for // scalars and an immutable, empty value for lists or messages. // It panics if xt does not extend m. -func GetExtension(m Message, xt protoreflect.ExtensionType) interface{} { +func GetExtension(m Message, xt protoreflect.ExtensionType) any { // Treat nil message interface as an empty message; return the default. if m == nil { return xt.InterfaceOf(xt.Zero()) @@ -48,7 +51,7 @@ func GetExtension(m Message, xt protoreflect.ExtensionType) interface{} { // SetExtension stores the value of an extension field. // It panics if m is invalid, xt does not extend m, or if type of v // is invalid for the specified extension field. -func SetExtension(m Message, xt protoreflect.ExtensionType, v interface{}) { +func SetExtension(m Message, xt protoreflect.ExtensionType, v any) { xd := xt.TypeDescriptor() pv := xt.ValueOf(v) @@ -75,7 +78,7 @@ func SetExtension(m Message, xt protoreflect.ExtensionType, v interface{}) { // It returns immediately if f returns false. // While iterating, mutating operations may only be performed // on the current extension field. -func RangeExtensions(m Message, f func(protoreflect.ExtensionType, interface{}) bool) { +func RangeExtensions(m Message, f func(protoreflect.ExtensionType, any) bool) { // Treat nil message interface as an empty message; nothing to range over. if m == nil { return diff --git a/vendor/google.golang.org/protobuf/proto/messageset.go b/vendor/google.golang.org/protobuf/proto/messageset.go index 312d5d45c..575d14831 100644 --- a/vendor/google.golang.org/protobuf/proto/messageset.go +++ b/vendor/google.golang.org/protobuf/proto/messageset.go @@ -47,11 +47,16 @@ func (o MarshalOptions) marshalMessageSet(b []byte, m protoreflect.Message) ([]b func (o MarshalOptions) marshalMessageSetField(b []byte, fd protoreflect.FieldDescriptor, value protoreflect.Value) ([]byte, error) { b = messageset.AppendFieldStart(b, fd.Number()) b = protowire.AppendTag(b, messageset.FieldMessage, protowire.BytesType) - b = protowire.AppendVarint(b, uint64(o.Size(value.Message().Interface()))) + calculatedSize := o.Size(value.Message().Interface()) + b = protowire.AppendVarint(b, uint64(calculatedSize)) + before := len(b) b, err := o.marshalMessage(b, value.Message()) if err != nil { return b, err } + if measuredSize := len(b) - before; calculatedSize != measuredSize { + return nil, errors.MismatchedSizeCalculation(calculatedSize, measuredSize) + } b = messageset.AppendFieldEnd(b) return b, nil } diff --git a/vendor/google.golang.org/protobuf/proto/size.go b/vendor/google.golang.org/protobuf/proto/size.go index f1692b49b..052fb5ae3 100644 --- a/vendor/google.golang.org/protobuf/proto/size.go +++ b/vendor/google.golang.org/protobuf/proto/size.go @@ -34,6 +34,7 @@ func (o MarshalOptions) size(m protoreflect.Message) (size int) { if methods != nil && methods.Size != nil { out := methods.Size(protoiface.SizeInput{ Message: m, + Flags: o.flags(), }) return out.Size } @@ -42,6 +43,7 @@ func (o MarshalOptions) size(m protoreflect.Message) (size int) { // This case is mainly used for legacy types with a Marshal method. out, _ := methods.Marshal(protoiface.MarshalInput{ Message: m, + Flags: o.flags(), }) return len(out.Buf) } diff --git a/vendor/google.golang.org/protobuf/reflect/protodesc/desc.go b/vendor/google.golang.org/protobuf/reflect/protodesc/desc.go index baa0cc621..8fbecb4f5 100644 --- a/vendor/google.golang.org/protobuf/reflect/protodesc/desc.go +++ b/vendor/google.golang.org/protobuf/reflect/protodesc/desc.go @@ -13,6 +13,7 @@ package protodesc import ( + "google.golang.org/protobuf/internal/editionssupport" "google.golang.org/protobuf/internal/errors" "google.golang.org/protobuf/internal/filedesc" "google.golang.org/protobuf/internal/pragma" @@ -91,15 +92,17 @@ func (o FileOptions) New(fd *descriptorpb.FileDescriptorProto, r Resolver) (prot switch fd.GetSyntax() { case "proto2", "": f.L1.Syntax = protoreflect.Proto2 + f.L1.Edition = filedesc.EditionProto2 case "proto3": f.L1.Syntax = protoreflect.Proto3 + f.L1.Edition = filedesc.EditionProto3 case "editions": f.L1.Syntax = protoreflect.Editions f.L1.Edition = fromEditionProto(fd.GetEdition()) default: return nil, errors.New("invalid syntax: %q", fd.GetSyntax()) } - if f.L1.Syntax == protoreflect.Editions && (fd.GetEdition() < SupportedEditionsMinimum || fd.GetEdition() > SupportedEditionsMaximum) { + if f.L1.Syntax == protoreflect.Editions && (fd.GetEdition() < editionssupport.Minimum || fd.GetEdition() > editionssupport.Maximum) { return nil, errors.New("use of edition %v not yet supported by the Go Protobuf runtime", fd.GetEdition()) } f.L1.Path = fd.GetName() @@ -114,9 +117,7 @@ func (o FileOptions) New(fd *descriptorpb.FileDescriptorProto, r Resolver) (prot opts = proto.Clone(opts).(*descriptorpb.FileOptions) f.L2.Options = func() protoreflect.ProtoMessage { return opts } } - if f.L1.Syntax == protoreflect.Editions { - initFileDescFromFeatureSet(f, fd.GetOptions().GetFeatures()) - } + initFileDescFromFeatureSet(f, fd.GetOptions().GetFeatures()) f.L2.Imports = make(filedesc.FileImports, len(fd.GetDependency())) for _, i := range fd.GetPublicDependency() { @@ -219,10 +220,10 @@ func (o FileOptions) New(fd *descriptorpb.FileDescriptorProto, r Resolver) (prot if err := validateEnumDeclarations(f.L1.Enums.List, fd.GetEnumType()); err != nil { return nil, err } - if err := validateMessageDeclarations(f.L1.Messages.List, fd.GetMessageType()); err != nil { + if err := validateMessageDeclarations(f, f.L1.Messages.List, fd.GetMessageType()); err != nil { return nil, err } - if err := validateExtensionDeclarations(f.L1.Extensions.List, fd.GetExtension()); err != nil { + if err := validateExtensionDeclarations(f, f.L1.Extensions.List, fd.GetExtension()); err != nil { return nil, err } diff --git a/vendor/google.golang.org/protobuf/reflect/protodesc/desc_init.go b/vendor/google.golang.org/protobuf/reflect/protodesc/desc_init.go index b3278163c..856175542 100644 --- a/vendor/google.golang.org/protobuf/reflect/protodesc/desc_init.go +++ b/vendor/google.golang.org/protobuf/reflect/protodesc/desc_init.go @@ -69,9 +69,7 @@ func (r descsByName) initMessagesDeclarations(mds []*descriptorpb.DescriptorProt if m.L0, err = r.makeBase(m, parent, md.GetName(), i, sb); err != nil { return nil, err } - if m.Base.L0.ParentFile.Syntax() == protoreflect.Editions { - m.L1.EditionFeatures = mergeEditionFeatures(parent, md.GetOptions().GetFeatures()) - } + m.L1.EditionFeatures = mergeEditionFeatures(parent, md.GetOptions().GetFeatures()) if opts := md.GetOptions(); opts != nil { opts = proto.Clone(opts).(*descriptorpb.MessageOptions) m.L2.Options = func() protoreflect.ProtoMessage { return opts } @@ -146,13 +144,15 @@ func (r descsByName) initFieldsFromDescriptorProto(fds []*descriptorpb.FieldDesc if f.L0, err = r.makeBase(f, parent, fd.GetName(), i, sb); err != nil { return nil, err } + f.L1.EditionFeatures = mergeEditionFeatures(parent, fd.GetOptions().GetFeatures()) f.L1.IsProto3Optional = fd.GetProto3Optional() if opts := fd.GetOptions(); opts != nil { opts = proto.Clone(opts).(*descriptorpb.FieldOptions) f.L1.Options = func() protoreflect.ProtoMessage { return opts } f.L1.IsWeak = opts.GetWeak() - f.L1.HasPacked = opts.Packed != nil - f.L1.IsPacked = opts.GetPacked() + if opts.Packed != nil { + f.L1.EditionFeatures.IsPacked = opts.GetPacked() + } } f.L1.Number = protoreflect.FieldNumber(fd.GetNumber()) f.L1.Cardinality = protoreflect.Cardinality(fd.GetLabel()) @@ -163,32 +163,12 @@ func (r descsByName) initFieldsFromDescriptorProto(fds []*descriptorpb.FieldDesc f.L1.StringName.InitJSON(fd.GetJsonName()) } - if f.Base.L0.ParentFile.Syntax() == protoreflect.Editions { - f.L1.EditionFeatures = mergeEditionFeatures(parent, fd.GetOptions().GetFeatures()) - - if f.L1.EditionFeatures.IsLegacyRequired { - f.L1.Cardinality = protoreflect.Required - } - // We reuse the existing field because the old option `[packed = - // true]` is mutually exclusive with the editions feature. - if canBePacked(fd) { - f.L1.HasPacked = true - f.L1.IsPacked = f.L1.EditionFeatures.IsPacked - } - - // We pretend this option is always explicitly set because the only - // use of HasEnforceUTF8 is to determine whether to use EnforceUTF8 - // or to return the appropriate default. - // When using editions we either parse the option or resolve the - // appropriate default here (instead of later when this option is - // requested from the descriptor). - // In proto2/proto3 syntax HasEnforceUTF8 might be false. - f.L1.HasEnforceUTF8 = true - f.L1.EnforceUTF8 = f.L1.EditionFeatures.IsUTF8Validated + if f.L1.EditionFeatures.IsLegacyRequired { + f.L1.Cardinality = protoreflect.Required + } - if f.L1.Kind == protoreflect.MessageKind && f.L1.EditionFeatures.IsDelimitedEncoded { - f.L1.Kind = protoreflect.GroupKind - } + if f.L1.Kind == protoreflect.MessageKind && f.L1.EditionFeatures.IsDelimitedEncoded { + f.L1.Kind = protoreflect.GroupKind } } return fs, nil @@ -201,12 +181,10 @@ func (r descsByName) initOneofsFromDescriptorProto(ods []*descriptorpb.OneofDesc if o.L0, err = r.makeBase(o, parent, od.GetName(), i, sb); err != nil { return nil, err } + o.L1.EditionFeatures = mergeEditionFeatures(parent, od.GetOptions().GetFeatures()) if opts := od.GetOptions(); opts != nil { opts = proto.Clone(opts).(*descriptorpb.OneofOptions) o.L1.Options = func() protoreflect.ProtoMessage { return opts } - if parent.Syntax() == protoreflect.Editions { - o.L1.EditionFeatures = mergeEditionFeatures(parent, opts.GetFeatures()) - } } } return os, nil @@ -220,10 +198,13 @@ func (r descsByName) initExtensionDeclarations(xds []*descriptorpb.FieldDescript if x.L0, err = r.makeBase(x, parent, xd.GetName(), i, sb); err != nil { return nil, err } + x.L1.EditionFeatures = mergeEditionFeatures(parent, xd.GetOptions().GetFeatures()) if opts := xd.GetOptions(); opts != nil { opts = proto.Clone(opts).(*descriptorpb.FieldOptions) x.L2.Options = func() protoreflect.ProtoMessage { return opts } - x.L2.IsPacked = opts.GetPacked() + if opts.Packed != nil { + x.L1.EditionFeatures.IsPacked = opts.GetPacked() + } } x.L1.Number = protoreflect.FieldNumber(xd.GetNumber()) x.L1.Cardinality = protoreflect.Cardinality(xd.GetLabel()) diff --git a/vendor/google.golang.org/protobuf/reflect/protodesc/desc_resolve.go b/vendor/google.golang.org/protobuf/reflect/protodesc/desc_resolve.go index 254ca5854..f3cebab29 100644 --- a/vendor/google.golang.org/protobuf/reflect/protodesc/desc_resolve.go +++ b/vendor/google.golang.org/protobuf/reflect/protodesc/desc_resolve.go @@ -46,6 +46,11 @@ func (r *resolver) resolveMessageDependencies(ms []filedesc.Message, mds []*desc if f.L1.Kind, f.L1.Enum, f.L1.Message, err = r.findTarget(f.Kind(), f.Parent().FullName(), partialName(fd.GetTypeName()), f.IsWeak()); err != nil { return errors.New("message field %q cannot resolve type: %v", f.FullName(), err) } + if f.L1.Kind == protoreflect.GroupKind && (f.IsMap() || f.IsMapEntry()) { + // A map field might inherit delimited encoding from a file-wide default feature. + // But maps never actually use delimited encoding. (At least for now...) + f.L1.Kind = protoreflect.MessageKind + } if fd.DefaultValue != nil { v, ev, err := unmarshalDefault(fd.GetDefaultValue(), f, r.allowUnresolvable) if err != nil { diff --git a/vendor/google.golang.org/protobuf/reflect/protodesc/desc_validate.go b/vendor/google.golang.org/protobuf/reflect/protodesc/desc_validate.go index e4dcaf876..6de31c2eb 100644 --- a/vendor/google.golang.org/protobuf/reflect/protodesc/desc_validate.go +++ b/vendor/google.golang.org/protobuf/reflect/protodesc/desc_validate.go @@ -45,11 +45,11 @@ func validateEnumDeclarations(es []filedesc.Enum, eds []*descriptorpb.EnumDescri if allowAlias && !foundAlias { return errors.New("enum %q allows aliases, but none were found", e.FullName()) } - if e.Syntax() == protoreflect.Proto3 { + if !e.IsClosed() { if v := e.Values().Get(0); v.Number() != 0 { - return errors.New("enum %q using proto3 semantics must have zero number for the first value", v.FullName()) + return errors.New("enum %q using open semantics must have zero number for the first value", v.FullName()) } - // Verify that value names in proto3 do not conflict if the + // Verify that value names in open enums do not conflict if the // case-insensitive prefix is removed. // See protoc v3.8.0: src/google/protobuf/descriptor.cc:4991-5055 names := map[string]protoreflect.EnumValueDescriptor{} @@ -58,7 +58,7 @@ func validateEnumDeclarations(es []filedesc.Enum, eds []*descriptorpb.EnumDescri v1 := e.Values().Get(i) s := strs.EnumValueName(strs.TrimEnumPrefix(string(v1.Name()), prefix)) if v2, ok := names[s]; ok && v1.Number() != v2.Number() { - return errors.New("enum %q using proto3 semantics has conflict: %q with %q", e.FullName(), v1.Name(), v2.Name()) + return errors.New("enum %q using open semantics has conflict: %q with %q", e.FullName(), v1.Name(), v2.Name()) } names[s] = v1 } @@ -80,7 +80,9 @@ func validateEnumDeclarations(es []filedesc.Enum, eds []*descriptorpb.EnumDescri return nil } -func validateMessageDeclarations(ms []filedesc.Message, mds []*descriptorpb.DescriptorProto) error { +func validateMessageDeclarations(file *filedesc.File, ms []filedesc.Message, mds []*descriptorpb.DescriptorProto) error { + // There are a few limited exceptions only for proto3 + isProto3 := file.L1.Edition == fromEditionProto(descriptorpb.Edition_EDITION_PROTO3) for i, md := range mds { m := &ms[i] @@ -107,25 +109,13 @@ func validateMessageDeclarations(ms []filedesc.Message, mds []*descriptorpb.Desc if isMessageSet && !flags.ProtoLegacy { return errors.New("message %q is a MessageSet, which is a legacy proto1 feature that is no longer supported", m.FullName()) } - if isMessageSet && (m.Syntax() == protoreflect.Proto3 || m.Fields().Len() > 0 || m.ExtensionRanges().Len() == 0) { + if isMessageSet && (isProto3 || m.Fields().Len() > 0 || m.ExtensionRanges().Len() == 0) { return errors.New("message %q is an invalid proto1 MessageSet", m.FullName()) } - if m.Syntax() == protoreflect.Proto3 { + if isProto3 { if m.ExtensionRanges().Len() > 0 { return errors.New("message %q using proto3 semantics cannot have extension ranges", m.FullName()) } - // Verify that field names in proto3 do not conflict if lowercased - // with all underscores removed. - // See protoc v3.8.0: src/google/protobuf/descriptor.cc:5830-5847 - names := map[string]protoreflect.FieldDescriptor{} - for i := 0; i < m.Fields().Len(); i++ { - f1 := m.Fields().Get(i) - s := strings.Replace(strings.ToLower(string(f1.Name())), "_", "", -1) - if f2, ok := names[s]; ok { - return errors.New("message %q using proto3 semantics has conflict: %q with %q", m.FullName(), f1.Name(), f2.Name()) - } - names[s] = f1 - } } for j, fd := range md.GetField() { @@ -149,7 +139,7 @@ func validateMessageDeclarations(ms []filedesc.Message, mds []*descriptorpb.Desc return errors.New("message field %q may not have extendee: %q", f.FullName(), fd.GetExtendee()) } if f.L1.IsProto3Optional { - if f.Syntax() != protoreflect.Proto3 { + if !isProto3 { return errors.New("message field %q under proto3 optional semantics must be specified in the proto3 syntax", f.FullName()) } if f.Cardinality() != protoreflect.Optional { @@ -162,26 +152,29 @@ func validateMessageDeclarations(ms []filedesc.Message, mds []*descriptorpb.Desc if f.IsWeak() && !flags.ProtoLegacy { return errors.New("message field %q is a weak field, which is a legacy proto1 feature that is no longer supported", f.FullName()) } - if f.IsWeak() && (f.Syntax() != protoreflect.Proto2 || !isOptionalMessage(f) || f.ContainingOneof() != nil) { + if f.IsWeak() && (!f.HasPresence() || !isOptionalMessage(f) || f.ContainingOneof() != nil) { return errors.New("message field %q may only be weak for an optional message", f.FullName()) } if f.IsPacked() && !isPackable(f) { return errors.New("message field %q is not packable", f.FullName()) } - if err := checkValidGroup(f); err != nil { + if err := checkValidGroup(file, f); err != nil { return errors.New("message field %q is an invalid group: %v", f.FullName(), err) } if err := checkValidMap(f); err != nil { return errors.New("message field %q is an invalid map: %v", f.FullName(), err) } - if f.Syntax() == protoreflect.Proto3 { + if isProto3 { if f.Cardinality() == protoreflect.Required { return errors.New("message field %q using proto3 semantics cannot be required", f.FullName()) } - if f.Enum() != nil && !f.Enum().IsPlaceholder() && f.Enum().Syntax() != protoreflect.Proto3 { - return errors.New("message field %q using proto3 semantics may only depend on a proto3 enum", f.FullName()) + if f.Enum() != nil && !f.Enum().IsPlaceholder() && f.Enum().IsClosed() { + return errors.New("message field %q using proto3 semantics may only depend on open enums", f.FullName()) } } + if f.Cardinality() == protoreflect.Optional && !f.HasPresence() && f.Enum() != nil && !f.Enum().IsPlaceholder() && f.Enum().IsClosed() { + return errors.New("message field %q with implicit presence may only use open enums", f.FullName()) + } } seenSynthetic := false // synthetic oneofs for proto3 optional must come after real oneofs for j := range md.GetOneofDecl() { @@ -215,17 +208,17 @@ func validateMessageDeclarations(ms []filedesc.Message, mds []*descriptorpb.Desc if err := validateEnumDeclarations(m.L1.Enums.List, md.GetEnumType()); err != nil { return err } - if err := validateMessageDeclarations(m.L1.Messages.List, md.GetNestedType()); err != nil { + if err := validateMessageDeclarations(file, m.L1.Messages.List, md.GetNestedType()); err != nil { return err } - if err := validateExtensionDeclarations(m.L1.Extensions.List, md.GetExtension()); err != nil { + if err := validateExtensionDeclarations(file, m.L1.Extensions.List, md.GetExtension()); err != nil { return err } } return nil } -func validateExtensionDeclarations(xs []filedesc.Extension, xds []*descriptorpb.FieldDescriptorProto) error { +func validateExtensionDeclarations(f *filedesc.File, xs []filedesc.Extension, xds []*descriptorpb.FieldDescriptorProto) error { for i, xd := range xds { x := &xs[i] // NOTE: Avoid using the IsValid method since extensions to MessageSet @@ -267,13 +260,13 @@ func validateExtensionDeclarations(xs []filedesc.Extension, xds []*descriptorpb. if x.IsPacked() && !isPackable(x) { return errors.New("extension field %q is not packable", x.FullName()) } - if err := checkValidGroup(x); err != nil { + if err := checkValidGroup(f, x); err != nil { return errors.New("extension field %q is an invalid group: %v", x.FullName(), err) } if md := x.Message(); md != nil && md.IsMapEntry() { return errors.New("extension field %q cannot be a map entry", x.FullName()) } - if x.Syntax() == protoreflect.Proto3 { + if f.L1.Edition == fromEditionProto(descriptorpb.Edition_EDITION_PROTO3) { switch x.ContainingMessage().FullName() { case (*descriptorpb.FileOptions)(nil).ProtoReflect().Descriptor().FullName(): case (*descriptorpb.EnumOptions)(nil).ProtoReflect().Descriptor().FullName(): @@ -309,21 +302,25 @@ func isPackable(fd protoreflect.FieldDescriptor) bool { // checkValidGroup reports whether fd is a valid group according to the same // rules that protoc imposes. -func checkValidGroup(fd protoreflect.FieldDescriptor) error { +func checkValidGroup(f *filedesc.File, fd protoreflect.FieldDescriptor) error { md := fd.Message() switch { case fd.Kind() != protoreflect.GroupKind: return nil - case fd.Syntax() == protoreflect.Proto3: + case f.L1.Edition == fromEditionProto(descriptorpb.Edition_EDITION_PROTO3): return errors.New("invalid under proto3 semantics") case md == nil || md.IsPlaceholder(): return errors.New("message must be resolvable") - case fd.FullName().Parent() != md.FullName().Parent(): - return errors.New("message and field must be declared in the same scope") - case !unicode.IsUpper(rune(md.Name()[0])): - return errors.New("message name must start with an uppercase") - case fd.Name() != protoreflect.Name(strings.ToLower(string(md.Name()))): - return errors.New("field name must be lowercased form of the message name") + } + if f.L1.Edition < fromEditionProto(descriptorpb.Edition_EDITION_2023) { + switch { + case fd.FullName().Parent() != md.FullName().Parent(): + return errors.New("message and field must be declared in the same scope") + case !unicode.IsUpper(rune(md.Name()[0])): + return errors.New("message name must start with an uppercase") + case fd.Name() != protoreflect.Name(strings.ToLower(string(md.Name()))): + return errors.New("field name must be lowercased form of the message name") + } } return nil } diff --git a/vendor/google.golang.org/protobuf/reflect/protodesc/editions.go b/vendor/google.golang.org/protobuf/reflect/protodesc/editions.go index 2a6b29d17..804830eda 100644 --- a/vendor/google.golang.org/protobuf/reflect/protodesc/editions.go +++ b/vendor/google.golang.org/protobuf/reflect/protodesc/editions.go @@ -17,11 +17,6 @@ import ( gofeaturespb "google.golang.org/protobuf/types/gofeaturespb" ) -const ( - SupportedEditionsMinimum = descriptorpb.Edition_EDITION_PROTO2 - SupportedEditionsMaximum = descriptorpb.Edition_EDITION_2023 -) - var defaults = &descriptorpb.FeatureSetDefaults{} var defaultsCacheMu sync.Mutex var defaultsCache = make(map[filedesc.Edition]*descriptorpb.FeatureSet) @@ -67,18 +62,20 @@ func getFeatureSetFor(ed filedesc.Edition) *descriptorpb.FeatureSet { fmt.Fprintf(os.Stderr, "internal error: unsupported edition %v (did you forget to update the embedded defaults (i.e. the bootstrap descriptor proto)?)\n", edpb) os.Exit(1) } - fs := defaults.GetDefaults()[0].GetFeatures() + fsed := defaults.GetDefaults()[0] // Using a linear search for now. // Editions are guaranteed to be sorted and thus we could use a binary search. // Given that there are only a handful of editions (with one more per year) // there is not much reason to use a binary search. for _, def := range defaults.GetDefaults() { if def.GetEdition() <= edpb { - fs = def.GetFeatures() + fsed = def } else { break } } + fs := proto.Clone(fsed.GetFixedFeatures()).(*descriptorpb.FeatureSet) + proto.Merge(fs, fsed.GetOverridableFeatures()) defaultsCache[ed] = fs return fs } diff --git a/vendor/google.golang.org/protobuf/reflect/protodesc/proto.go b/vendor/google.golang.org/protobuf/reflect/protodesc/proto.go index 9d6e05420..a5de8d400 100644 --- a/vendor/google.golang.org/protobuf/reflect/protodesc/proto.go +++ b/vendor/google.golang.org/protobuf/reflect/protodesc/proto.go @@ -73,6 +73,16 @@ func ToFileDescriptorProto(file protoreflect.FileDescriptor) *descriptorpb.FileD if syntax := file.Syntax(); syntax != protoreflect.Proto2 && syntax.IsValid() { p.Syntax = proto.String(file.Syntax().String()) } + if file.Syntax() == protoreflect.Editions { + desc := file + if fileImportDesc, ok := file.(protoreflect.FileImport); ok { + desc = fileImportDesc.FileDescriptor + } + + if editionsInterface, ok := desc.(interface{ Edition() int32 }); ok { + p.Edition = descriptorpb.Edition(editionsInterface.Edition()).Enum() + } + } return p } @@ -153,6 +163,18 @@ func ToFieldDescriptorProto(field protoreflect.FieldDescriptor) *descriptorpb.Fi if field.Syntax() == protoreflect.Proto3 && field.HasOptionalKeyword() { p.Proto3Optional = proto.Bool(true) } + if field.Syntax() == protoreflect.Editions { + // Editions have no group keyword, this type is only set so that downstream users continue + // treating this as delimited encoding. + if p.GetType() == descriptorpb.FieldDescriptorProto_TYPE_GROUP { + p.Type = descriptorpb.FieldDescriptorProto_TYPE_MESSAGE.Enum() + } + // Editions have no required keyword, this label is only set so that downstream users continue + // treating it as required. + if p.GetLabel() == descriptorpb.FieldDescriptorProto_LABEL_REQUIRED { + p.Label = descriptorpb.FieldDescriptorProto_LABEL_OPTIONAL.Enum() + } + } if field.HasDefault() { def, err := defval.Marshal(field.Default(), field.DefaultEnumValue(), field.Kind(), defval.Descriptor) if err != nil && field.DefaultEnumValue() != nil { diff --git a/vendor/google.golang.org/protobuf/reflect/protoreflect/proto.go b/vendor/google.golang.org/protobuf/reflect/protoreflect/proto.go index 00b01fbd8..c85bfaa5b 100644 --- a/vendor/google.golang.org/protobuf/reflect/protoreflect/proto.go +++ b/vendor/google.golang.org/protobuf/reflect/protoreflect/proto.go @@ -161,7 +161,7 @@ const ( // IsValid reports whether the syntax is valid. func (s Syntax) IsValid() bool { switch s { - case Proto2, Proto3: + case Proto2, Proto3, Editions: return true default: return false diff --git a/vendor/google.golang.org/protobuf/reflect/protoreflect/source_gen.go b/vendor/google.golang.org/protobuf/reflect/protoreflect/source_gen.go index 7dcc2ff09..ea154eec4 100644 --- a/vendor/google.golang.org/protobuf/reflect/protoreflect/source_gen.go +++ b/vendor/google.golang.org/protobuf/reflect/protoreflect/source_gen.go @@ -373,6 +373,8 @@ func (p *SourcePath) appendFieldOptions(b []byte) []byte { b = p.appendRepeatedField(b, "edition_defaults", (*SourcePath).appendFieldOptions_EditionDefault) case 21: b = p.appendSingularField(b, "features", (*SourcePath).appendFeatureSet) + case 22: + b = p.appendSingularField(b, "feature_support", (*SourcePath).appendFieldOptions_FeatureSupport) case 999: b = p.appendRepeatedField(b, "uninterpreted_option", (*SourcePath).appendUninterpretedOption) } @@ -483,6 +485,8 @@ func (p *SourcePath) appendEnumValueOptions(b []byte) []byte { b = p.appendSingularField(b, "features", (*SourcePath).appendFeatureSet) case 3: b = p.appendSingularField(b, "debug_redact", nil) + case 4: + b = p.appendSingularField(b, "feature_support", (*SourcePath).appendFieldOptions_FeatureSupport) case 999: b = p.appendRepeatedField(b, "uninterpreted_option", (*SourcePath).appendUninterpretedOption) } @@ -519,6 +523,23 @@ func (p *SourcePath) appendFieldOptions_EditionDefault(b []byte) []byte { return b } +func (p *SourcePath) appendFieldOptions_FeatureSupport(b []byte) []byte { + if len(*p) == 0 { + return b + } + switch (*p)[0] { + case 1: + b = p.appendSingularField(b, "edition_introduced", nil) + case 2: + b = p.appendSingularField(b, "edition_deprecated", nil) + case 3: + b = p.appendSingularField(b, "deprecation_warning", nil) + case 4: + b = p.appendSingularField(b, "edition_removed", nil) + } + return b +} + func (p *SourcePath) appendUninterpretedOption_NamePart(b []byte) []byte { if len(*p) == 0 { return b diff --git a/vendor/google.golang.org/protobuf/reflect/protoreflect/type.go b/vendor/google.golang.org/protobuf/reflect/protoreflect/type.go index 60ff62b4c..cd8fadbaf 100644 --- a/vendor/google.golang.org/protobuf/reflect/protoreflect/type.go +++ b/vendor/google.golang.org/protobuf/reflect/protoreflect/type.go @@ -510,7 +510,7 @@ type ExtensionType interface { // // ValueOf is more extensive than protoreflect.ValueOf for a given field's // value as it has more type information available. - ValueOf(interface{}) Value + ValueOf(any) Value // InterfaceOf completely unwraps the Value to the underlying Go type. // InterfaceOf panics if the input is nil or does not represent the @@ -519,13 +519,13 @@ type ExtensionType interface { // // InterfaceOf is able to unwrap the Value further than Value.Interface // as it has more type information available. - InterfaceOf(Value) interface{} + InterfaceOf(Value) any // IsValidValue reports whether the Value is valid to assign to the field. IsValidValue(Value) bool // IsValidInterface reports whether the input is valid to assign to the field. - IsValidInterface(interface{}) bool + IsValidInterface(any) bool } // EnumDescriptor describes an enum and @@ -544,6 +544,12 @@ type EnumDescriptor interface { // ReservedRanges is a list of reserved ranges of enum numbers. ReservedRanges() EnumRanges + // IsClosed reports whether this enum uses closed semantics. + // See https://protobuf.dev/programming-guides/enum/#definitions. + // Note: the Go protobuf implementation is not spec compliant and treats + // all enums as open enums. + IsClosed() bool + isEnumDescriptor } type isEnumDescriptor interface{ ProtoType(EnumDescriptor) } diff --git a/vendor/google.golang.org/protobuf/reflect/protoreflect/value_pure.go b/vendor/google.golang.org/protobuf/reflect/protoreflect/value_pure.go index 7ced876f4..75f83a2af 100644 --- a/vendor/google.golang.org/protobuf/reflect/protoreflect/value_pure.go +++ b/vendor/google.golang.org/protobuf/reflect/protoreflect/value_pure.go @@ -32,11 +32,11 @@ const ( type value struct { pragma.DoNotCompare // 0B - typ valueType // 8B - num uint64 // 8B - str string // 16B - bin []byte // 24B - iface interface{} // 16B + typ valueType // 8B + num uint64 // 8B + str string // 16B + bin []byte // 24B + iface any // 16B } func valueOfString(v string) Value { @@ -45,7 +45,7 @@ func valueOfString(v string) Value { func valueOfBytes(v []byte) Value { return Value{typ: bytesType, bin: v} } -func valueOfIface(v interface{}) Value { +func valueOfIface(v any) Value { return Value{typ: ifaceType, iface: v} } @@ -55,6 +55,6 @@ func (v Value) getString() string { func (v Value) getBytes() []byte { return v.bin } -func (v Value) getIface() interface{} { +func (v Value) getIface() any { return v.iface } diff --git a/vendor/google.golang.org/protobuf/reflect/protoreflect/value_union.go b/vendor/google.golang.org/protobuf/reflect/protoreflect/value_union.go index 160309731..9fe83cef5 100644 --- a/vendor/google.golang.org/protobuf/reflect/protoreflect/value_union.go +++ b/vendor/google.golang.org/protobuf/reflect/protoreflect/value_union.go @@ -69,8 +69,8 @@ import ( // composite Value. Modifying an empty, read-only value panics. type Value value -// The protoreflect API uses a custom Value union type instead of interface{} -// to keep the future open for performance optimizations. Using an interface{} +// The protoreflect API uses a custom Value union type instead of any +// to keep the future open for performance optimizations. Using an any // always incurs an allocation for primitives (e.g., int64) since it needs to // be boxed on the heap (as interfaces can only contain pointers natively). // Instead, we represent the Value union as a flat struct that internally keeps @@ -85,7 +85,7 @@ type Value value // ValueOf returns a Value initialized with the concrete value stored in v. // This panics if the type does not match one of the allowed types in the // Value union. -func ValueOf(v interface{}) Value { +func ValueOf(v any) Value { switch v := v.(type) { case nil: return Value{} @@ -192,10 +192,10 @@ func (v Value) IsValid() bool { return v.typ != nilType } -// Interface returns v as an interface{}. +// Interface returns v as an any. // // Invariant: v == ValueOf(v).Interface() -func (v Value) Interface() interface{} { +func (v Value) Interface() any { switch v.typ { case nilType: return nil @@ -406,8 +406,8 @@ func (k MapKey) IsValid() bool { return Value(k).IsValid() } -// Interface returns k as an interface{}. -func (k MapKey) Interface() interface{} { +// Interface returns k as an any. +func (k MapKey) Interface() any { return Value(k).Interface() } diff --git a/vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe_go120.go b/vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe_go120.go index b1fdbe3e8..7f3583ead 100644 --- a/vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe_go120.go +++ b/vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe_go120.go @@ -45,7 +45,7 @@ var ( // typeOf returns a pointer to the Go type information. // The pointer is comparable and equal if and only if the types are identical. -func typeOf(t interface{}) unsafe.Pointer { +func typeOf(t any) unsafe.Pointer { return (*ifaceHeader)(unsafe.Pointer(&t)).Type } @@ -80,7 +80,7 @@ func valueOfBytes(v []byte) Value { p := (*sliceHeader)(unsafe.Pointer(&v)) return Value{typ: bytesType, ptr: p.Data, num: uint64(len(v))} } -func valueOfIface(v interface{}) Value { +func valueOfIface(v any) Value { p := (*ifaceHeader)(unsafe.Pointer(&v)) return Value{typ: p.Type, ptr: p.Data} } @@ -93,7 +93,7 @@ func (v Value) getBytes() (x []byte) { *(*sliceHeader)(unsafe.Pointer(&x)) = sliceHeader{Data: v.ptr, Len: int(v.num), Cap: int(v.num)} return x } -func (v Value) getIface() (x interface{}) { +func (v Value) getIface() (x any) { *(*ifaceHeader)(unsafe.Pointer(&x)) = ifaceHeader{Type: v.typ, Data: v.ptr} return x } diff --git a/vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe_go121.go b/vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe_go121.go index 435470111..f7d386990 100644 --- a/vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe_go121.go +++ b/vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe_go121.go @@ -15,7 +15,7 @@ import ( type ( ifaceHeader struct { - _ [0]interface{} // if interfaces have greater alignment than unsafe.Pointer, this will enforce it. + _ [0]any // if interfaces have greater alignment than unsafe.Pointer, this will enforce it. Type unsafe.Pointer Data unsafe.Pointer } @@ -37,7 +37,7 @@ var ( // typeOf returns a pointer to the Go type information. // The pointer is comparable and equal if and only if the types are identical. -func typeOf(t interface{}) unsafe.Pointer { +func typeOf(t any) unsafe.Pointer { return (*ifaceHeader)(unsafe.Pointer(&t)).Type } @@ -70,7 +70,7 @@ func valueOfString(v string) Value { func valueOfBytes(v []byte) Value { return Value{typ: bytesType, ptr: unsafe.Pointer(unsafe.SliceData(v)), num: uint64(len(v))} } -func valueOfIface(v interface{}) Value { +func valueOfIface(v any) Value { p := (*ifaceHeader)(unsafe.Pointer(&v)) return Value{typ: p.Type, ptr: p.Data} } @@ -81,7 +81,7 @@ func (v Value) getString() string { func (v Value) getBytes() []byte { return unsafe.Slice((*byte)(v.ptr), v.num) } -func (v Value) getIface() (x interface{}) { +func (v Value) getIface() (x any) { *(*ifaceHeader)(unsafe.Pointer(&x)) = ifaceHeader{Type: v.typ, Data: v.ptr} return x } diff --git a/vendor/google.golang.org/protobuf/reflect/protoregistry/registry.go b/vendor/google.golang.org/protobuf/reflect/protoregistry/registry.go index 6267dc52a..de1777339 100644 --- a/vendor/google.golang.org/protobuf/reflect/protoregistry/registry.go +++ b/vendor/google.golang.org/protobuf/reflect/protoregistry/registry.go @@ -95,7 +95,7 @@ type Files struct { // multiple files. Only top-level declarations are registered. // Note that enum values are in the top-level since that are in the same // scope as the parent enum. - descsByName map[protoreflect.FullName]interface{} + descsByName map[protoreflect.FullName]any filesByPath map[string][]protoreflect.FileDescriptor numFiles int } @@ -117,7 +117,7 @@ func (r *Files) RegisterFile(file protoreflect.FileDescriptor) error { defer globalMutex.Unlock() } if r.descsByName == nil { - r.descsByName = map[protoreflect.FullName]interface{}{ + r.descsByName = map[protoreflect.FullName]any{ "": &packageDescriptor{}, } r.filesByPath = make(map[string][]protoreflect.FileDescriptor) @@ -485,7 +485,7 @@ type Types struct { } type ( - typesByName map[protoreflect.FullName]interface{} + typesByName map[protoreflect.FullName]any extensionsByMessage map[protoreflect.FullName]extensionsByNumber extensionsByNumber map[protoreflect.FieldNumber]protoreflect.ExtensionType ) @@ -570,7 +570,7 @@ func (r *Types) RegisterExtension(xt protoreflect.ExtensionType) error { return nil } -func (r *Types) register(kind string, desc protoreflect.Descriptor, typ interface{}) error { +func (r *Types) register(kind string, desc protoreflect.Descriptor, typ any) error { name := desc.FullName() prev := r.typesByName[name] if prev != nil { @@ -841,7 +841,7 @@ func (r *Types) RangeExtensionsByMessage(message protoreflect.FullName, f func(p } } -func typeName(t interface{}) string { +func typeName(t any) string { switch t.(type) { case protoreflect.EnumType: return "enum" @@ -854,7 +854,7 @@ func typeName(t interface{}) string { } } -func amendErrorWithCaller(err error, prev, curr interface{}) error { +func amendErrorWithCaller(err error, prev, curr any) error { prevPkg := goPackage(prev) currPkg := goPackage(curr) if prevPkg == "" || currPkg == "" || prevPkg == currPkg { @@ -863,7 +863,7 @@ func amendErrorWithCaller(err error, prev, curr interface{}) error { return errors.New("%s\n\tpreviously from: %q\n\tcurrently from: %q", err, prevPkg, currPkg) } -func goPackage(v interface{}) string { +func goPackage(v any) string { switch d := v.(type) { case protoreflect.EnumType: v = d.Descriptor() diff --git a/vendor/google.golang.org/protobuf/types/descriptorpb/descriptor.pb.go b/vendor/google.golang.org/protobuf/types/descriptorpb/descriptor.pb.go index 78624cf60..9403eb075 100644 --- a/vendor/google.golang.org/protobuf/types/descriptorpb/descriptor.pb.go +++ b/vendor/google.golang.org/protobuf/types/descriptorpb/descriptor.pb.go @@ -54,6 +54,9 @@ type Edition int32 const ( // A placeholder for an unknown edition value. Edition_EDITION_UNKNOWN Edition = 0 + // A placeholder edition for specifying default behaviors *before* a feature + // was first introduced. This is effectively an "infinite past". + Edition_EDITION_LEGACY Edition = 900 // Legacy syntax "editions". These pre-date editions, but behave much like // distinct editions. These can't be used to specify the edition of proto // files, but feature definitions must supply proto2/proto3 defaults for @@ -82,6 +85,7 @@ const ( var ( Edition_name = map[int32]string{ 0: "EDITION_UNKNOWN", + 900: "EDITION_LEGACY", 998: "EDITION_PROTO2", 999: "EDITION_PROTO3", 1000: "EDITION_2023", @@ -95,6 +99,7 @@ var ( } Edition_value = map[string]int32{ "EDITION_UNKNOWN": 0, + "EDITION_LEGACY": 900, "EDITION_PROTO2": 998, "EDITION_PROTO3": 999, "EDITION_2023": 1000, @@ -2177,12 +2182,16 @@ type FileOptions struct { // // Deprecated: Marked as deprecated in google/protobuf/descriptor.proto. JavaGenerateEqualsAndHash *bool `protobuf:"varint,20,opt,name=java_generate_equals_and_hash,json=javaGenerateEqualsAndHash" json:"java_generate_equals_and_hash,omitempty"` - // If set true, then the Java2 code generator will generate code that - // throws an exception whenever an attempt is made to assign a non-UTF-8 - // byte sequence to a string field. - // Message reflection will do the same. - // However, an extension field still accepts non-UTF-8 byte sequences. - // This option has no effect on when used with the lite runtime. + // A proto2 file can set this to true to opt in to UTF-8 checking for Java, + // which will throw an exception if invalid UTF-8 is parsed from the wire or + // assigned to a string field. + // + // TODO: clarify exactly what kinds of field types this option + // applies to, and update these docs accordingly. + // + // Proto3 files already perform these checks. Setting the option explicitly to + // false has no effect: it cannot be used to opt proto3 files out of UTF-8 + // checks. JavaStringCheckUtf8 *bool `protobuf:"varint,27,opt,name=java_string_check_utf8,json=javaStringCheckUtf8,def=0" json:"java_string_check_utf8,omitempty"` OptimizeFor *FileOptions_OptimizeMode `protobuf:"varint,9,opt,name=optimize_for,json=optimizeFor,enum=google.protobuf.FileOptions_OptimizeMode,def=1" json:"optimize_for,omitempty"` // Sets the Go package where structs generated from this .proto will be @@ -2679,7 +2688,8 @@ type FieldOptions struct { Targets []FieldOptions_OptionTargetType `protobuf:"varint,19,rep,name=targets,enum=google.protobuf.FieldOptions_OptionTargetType" json:"targets,omitempty"` EditionDefaults []*FieldOptions_EditionDefault `protobuf:"bytes,20,rep,name=edition_defaults,json=editionDefaults" json:"edition_defaults,omitempty"` // Any features defined in the specific edition. - Features *FeatureSet `protobuf:"bytes,21,opt,name=features" json:"features,omitempty"` + Features *FeatureSet `protobuf:"bytes,21,opt,name=features" json:"features,omitempty"` + FeatureSupport *FieldOptions_FeatureSupport `protobuf:"bytes,22,opt,name=feature_support,json=featureSupport" json:"feature_support,omitempty"` // The parser stores options it doesn't recognize here. See above. UninterpretedOption []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"` } @@ -2811,6 +2821,13 @@ func (x *FieldOptions) GetFeatures() *FeatureSet { return nil } +func (x *FieldOptions) GetFeatureSupport() *FieldOptions_FeatureSupport { + if x != nil { + return x.FeatureSupport + } + return nil +} + func (x *FieldOptions) GetUninterpretedOption() []*UninterpretedOption { if x != nil { return x.UninterpretedOption @@ -2995,6 +3012,8 @@ type EnumValueOptions struct { // out when using debug formats, e.g. when the field contains sensitive // credentials. DebugRedact *bool `protobuf:"varint,3,opt,name=debug_redact,json=debugRedact,def=0" json:"debug_redact,omitempty"` + // Information about the support window of a feature value. + FeatureSupport *FieldOptions_FeatureSupport `protobuf:"bytes,4,opt,name=feature_support,json=featureSupport" json:"feature_support,omitempty"` // The parser stores options it doesn't recognize here. See above. UninterpretedOption []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"` } @@ -3058,6 +3077,13 @@ func (x *EnumValueOptions) GetDebugRedact() bool { return Default_EnumValueOptions_DebugRedact } +func (x *EnumValueOptions) GetFeatureSupport() *FieldOptions_FeatureSupport { + if x != nil { + return x.FeatureSupport + } + return nil +} + func (x *EnumValueOptions) GetUninterpretedOption() []*UninterpretedOption { if x != nil { return x.UninterpretedOption @@ -3968,6 +3994,88 @@ func (x *FieldOptions_EditionDefault) GetValue() string { return "" } +// Information about the support window of a feature. +type FieldOptions_FeatureSupport struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The edition that this feature was first available in. In editions + // earlier than this one, the default assigned to EDITION_LEGACY will be + // used, and proto files will not be able to override it. + EditionIntroduced *Edition `protobuf:"varint,1,opt,name=edition_introduced,json=editionIntroduced,enum=google.protobuf.Edition" json:"edition_introduced,omitempty"` + // The edition this feature becomes deprecated in. Using this after this + // edition may trigger warnings. + EditionDeprecated *Edition `protobuf:"varint,2,opt,name=edition_deprecated,json=editionDeprecated,enum=google.protobuf.Edition" json:"edition_deprecated,omitempty"` + // The deprecation warning text if this feature is used after the edition it + // was marked deprecated in. + DeprecationWarning *string `protobuf:"bytes,3,opt,name=deprecation_warning,json=deprecationWarning" json:"deprecation_warning,omitempty"` + // The edition this feature is no longer available in. In editions after + // this one, the last default assigned will be used, and proto files will + // not be able to override it. + EditionRemoved *Edition `protobuf:"varint,4,opt,name=edition_removed,json=editionRemoved,enum=google.protobuf.Edition" json:"edition_removed,omitempty"` +} + +func (x *FieldOptions_FeatureSupport) Reset() { + *x = FieldOptions_FeatureSupport{} + if protoimpl.UnsafeEnabled { + mi := &file_google_protobuf_descriptor_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FieldOptions_FeatureSupport) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FieldOptions_FeatureSupport) ProtoMessage() {} + +func (x *FieldOptions_FeatureSupport) ProtoReflect() protoreflect.Message { + mi := &file_google_protobuf_descriptor_proto_msgTypes[28] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FieldOptions_FeatureSupport.ProtoReflect.Descriptor instead. +func (*FieldOptions_FeatureSupport) Descriptor() ([]byte, []int) { + return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{12, 1} +} + +func (x *FieldOptions_FeatureSupport) GetEditionIntroduced() Edition { + if x != nil && x.EditionIntroduced != nil { + return *x.EditionIntroduced + } + return Edition_EDITION_UNKNOWN +} + +func (x *FieldOptions_FeatureSupport) GetEditionDeprecated() Edition { + if x != nil && x.EditionDeprecated != nil { + return *x.EditionDeprecated + } + return Edition_EDITION_UNKNOWN +} + +func (x *FieldOptions_FeatureSupport) GetDeprecationWarning() string { + if x != nil && x.DeprecationWarning != nil { + return *x.DeprecationWarning + } + return "" +} + +func (x *FieldOptions_FeatureSupport) GetEditionRemoved() Edition { + if x != nil && x.EditionRemoved != nil { + return *x.EditionRemoved + } + return Edition_EDITION_UNKNOWN +} + // The name of the uninterpreted option. Each string represents a segment in // a dot-separated name. is_extension is true iff a segment represents an // extension (denoted with parentheses in options specs in .proto files). @@ -3985,7 +4093,7 @@ type UninterpretedOption_NamePart struct { func (x *UninterpretedOption_NamePart) Reset() { *x = UninterpretedOption_NamePart{} if protoimpl.UnsafeEnabled { - mi := &file_google_protobuf_descriptor_proto_msgTypes[28] + mi := &file_google_protobuf_descriptor_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3998,7 +4106,7 @@ func (x *UninterpretedOption_NamePart) String() string { func (*UninterpretedOption_NamePart) ProtoMessage() {} func (x *UninterpretedOption_NamePart) ProtoReflect() protoreflect.Message { - mi := &file_google_protobuf_descriptor_proto_msgTypes[28] + mi := &file_google_protobuf_descriptor_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4037,14 +4145,17 @@ type FeatureSetDefaults_FeatureSetEditionDefault struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Edition *Edition `protobuf:"varint,3,opt,name=edition,enum=google.protobuf.Edition" json:"edition,omitempty"` - Features *FeatureSet `protobuf:"bytes,2,opt,name=features" json:"features,omitempty"` + Edition *Edition `protobuf:"varint,3,opt,name=edition,enum=google.protobuf.Edition" json:"edition,omitempty"` + // Defaults of features that can be overridden in this edition. + OverridableFeatures *FeatureSet `protobuf:"bytes,4,opt,name=overridable_features,json=overridableFeatures" json:"overridable_features,omitempty"` + // Defaults of features that can't be overridden in this edition. + FixedFeatures *FeatureSet `protobuf:"bytes,5,opt,name=fixed_features,json=fixedFeatures" json:"fixed_features,omitempty"` } func (x *FeatureSetDefaults_FeatureSetEditionDefault) Reset() { *x = FeatureSetDefaults_FeatureSetEditionDefault{} if protoimpl.UnsafeEnabled { - mi := &file_google_protobuf_descriptor_proto_msgTypes[29] + mi := &file_google_protobuf_descriptor_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4057,7 +4168,7 @@ func (x *FeatureSetDefaults_FeatureSetEditionDefault) String() string { func (*FeatureSetDefaults_FeatureSetEditionDefault) ProtoMessage() {} func (x *FeatureSetDefaults_FeatureSetEditionDefault) ProtoReflect() protoreflect.Message { - mi := &file_google_protobuf_descriptor_proto_msgTypes[29] + mi := &file_google_protobuf_descriptor_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4080,9 +4191,16 @@ func (x *FeatureSetDefaults_FeatureSetEditionDefault) GetEdition() Edition { return Edition_EDITION_UNKNOWN } -func (x *FeatureSetDefaults_FeatureSetEditionDefault) GetFeatures() *FeatureSet { +func (x *FeatureSetDefaults_FeatureSetEditionDefault) GetOverridableFeatures() *FeatureSet { if x != nil { - return x.Features + return x.OverridableFeatures + } + return nil +} + +func (x *FeatureSetDefaults_FeatureSetEditionDefault) GetFixedFeatures() *FeatureSet { + if x != nil { + return x.FixedFeatures } return nil } @@ -4188,7 +4306,7 @@ type SourceCodeInfo_Location struct { func (x *SourceCodeInfo_Location) Reset() { *x = SourceCodeInfo_Location{} if protoimpl.UnsafeEnabled { - mi := &file_google_protobuf_descriptor_proto_msgTypes[30] + mi := &file_google_protobuf_descriptor_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4201,7 +4319,7 @@ func (x *SourceCodeInfo_Location) String() string { func (*SourceCodeInfo_Location) ProtoMessage() {} func (x *SourceCodeInfo_Location) ProtoReflect() protoreflect.Message { - mi := &file_google_protobuf_descriptor_proto_msgTypes[30] + mi := &file_google_protobuf_descriptor_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4275,7 +4393,7 @@ type GeneratedCodeInfo_Annotation struct { func (x *GeneratedCodeInfo_Annotation) Reset() { *x = GeneratedCodeInfo_Annotation{} if protoimpl.UnsafeEnabled { - mi := &file_google_protobuf_descriptor_proto_msgTypes[31] + mi := &file_google_protobuf_descriptor_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4288,7 +4406,7 @@ func (x *GeneratedCodeInfo_Annotation) String() string { func (*GeneratedCodeInfo_Annotation) ProtoMessage() {} func (x *GeneratedCodeInfo_Annotation) ProtoReflect() protoreflect.Message { - mi := &file_google_protobuf_descriptor_proto_msgTypes[31] + mi := &file_google_protobuf_descriptor_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4597,7 +4715,7 @@ var file_google_protobuf_descriptor_proto_rawDesc = []byte{ 0x67, 0x12, 0x30, 0x0a, 0x10, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, - 0x69, 0x6e, 0x67, 0x22, 0x97, 0x09, 0x0a, 0x0b, 0x46, 0x69, 0x6c, 0x65, 0x4f, 0x70, 0x74, 0x69, + 0x69, 0x6e, 0x67, 0x22, 0xad, 0x09, 0x0a, 0x0b, 0x46, 0x69, 0x6c, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x6a, 0x61, 0x76, 0x61, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6a, 0x61, 0x76, 0x61, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x6a, 0x61, 0x76, 0x61, 0x5f, 0x6f, @@ -4670,405 +4788,445 @@ var file_google_protobuf_descriptor_proto_rawDesc = []byte{ 0x45, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x4c, 0x49, 0x54, 0x45, 0x5f, 0x52, 0x55, 0x4e, 0x54, 0x49, 0x4d, 0x45, 0x10, 0x03, 0x2a, 0x09, 0x08, 0xe8, 0x07, 0x10, 0x80, 0x80, 0x80, 0x80, - 0x02, 0x4a, 0x04, 0x08, 0x2a, 0x10, 0x2b, 0x4a, 0x04, 0x08, 0x26, 0x10, 0x27, 0x22, 0xf4, 0x03, - 0x0a, 0x0e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x12, 0x3c, 0x0a, 0x17, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, - 0x77, 0x69, 0x72, 0x65, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x14, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x53, 0x65, 0x74, 0x57, 0x69, 0x72, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x4c, - 0x0a, 0x1f, 0x6e, 0x6f, 0x5f, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x5f, 0x64, 0x65, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x6f, - 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x1c, - 0x6e, 0x6f, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x6f, 0x72, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x12, 0x25, 0x0a, 0x0a, - 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, - 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, - 0x74, 0x65, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x70, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x6d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x12, 0x56, 0x0a, 0x26, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6c, - 0x65, 0x67, 0x61, 0x63, 0x79, 0x5f, 0x6a, 0x73, 0x6f, 0x6e, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, - 0x42, 0x02, 0x18, 0x01, 0x52, 0x22, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, - 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x4a, 0x73, 0x6f, 0x6e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x43, - 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x73, 0x12, 0x37, 0x0a, 0x08, 0x66, 0x65, 0x61, 0x74, - 0x75, 0x72, 0x65, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, - 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x52, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, - 0x73, 0x12, 0x58, 0x0a, 0x14, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, - 0x65, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xe7, 0x07, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, - 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, - 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2a, 0x09, 0x08, 0xe8, 0x07, - 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x4a, 0x04, 0x08, 0x05, - 0x10, 0x06, 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, 0x4a, 0x04, 0x08, 0x08, 0x10, 0x09, 0x4a, 0x04, - 0x08, 0x09, 0x10, 0x0a, 0x22, 0xad, 0x0a, 0x0a, 0x0c, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x41, 0x0a, 0x05, 0x63, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x2e, 0x43, 0x54, 0x79, 0x70, 0x65, 0x3a, 0x06, 0x53, 0x54, 0x52, 0x49, 0x4e, - 0x47, 0x52, 0x05, 0x63, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x61, 0x63, 0x6b, - 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, - 0x12, 0x47, 0x0a, 0x06, 0x6a, 0x73, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, - 0x4a, 0x53, 0x54, 0x79, 0x70, 0x65, 0x3a, 0x09, 0x4a, 0x53, 0x5f, 0x4e, 0x4f, 0x52, 0x4d, 0x41, - 0x4c, 0x52, 0x06, 0x6a, 0x73, 0x74, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x04, 0x6c, 0x61, 0x7a, - 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x04, - 0x6c, 0x61, 0x7a, 0x79, 0x12, 0x2e, 0x0a, 0x0f, 0x75, 0x6e, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, - 0x65, 0x64, 0x5f, 0x6c, 0x61, 0x7a, 0x79, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, - 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0e, 0x75, 0x6e, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, - 0x4c, 0x61, 0x7a, 0x79, 0x12, 0x25, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, - 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, - 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x19, 0x0a, 0x04, 0x77, - 0x65, 0x61, 0x6b, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, - 0x52, 0x04, 0x77, 0x65, 0x61, 0x6b, 0x12, 0x28, 0x0a, 0x0c, 0x64, 0x65, 0x62, 0x75, 0x67, 0x5f, - 0x72, 0x65, 0x64, 0x61, 0x63, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, - 0x6c, 0x73, 0x65, 0x52, 0x0b, 0x64, 0x65, 0x62, 0x75, 0x67, 0x52, 0x65, 0x64, 0x61, 0x63, 0x74, - 0x12, 0x4b, 0x0a, 0x09, 0x72, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x11, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x09, 0x72, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x48, 0x0a, - 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x18, 0x13, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x2e, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4f, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x07, - 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x12, 0x57, 0x0a, 0x10, 0x65, 0x64, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x14, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2e, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, - 0x0f, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, - 0x12, 0x37, 0x0a, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x15, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x52, - 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x58, 0x0a, 0x14, 0x75, 0x6e, 0x69, - 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0xe7, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74, - 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, - 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x1a, 0x5a, 0x0a, 0x0e, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, - 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x32, 0x0a, 0x07, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x07, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, - 0x2f, 0x0a, 0x05, 0x43, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x54, 0x52, 0x49, - 0x4e, 0x47, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x43, 0x4f, 0x52, 0x44, 0x10, 0x01, 0x12, 0x10, - 0x0a, 0x0c, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x50, 0x49, 0x45, 0x43, 0x45, 0x10, 0x02, - 0x22, 0x35, 0x0a, 0x06, 0x4a, 0x53, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0d, 0x0a, 0x09, 0x4a, 0x53, - 0x5f, 0x4e, 0x4f, 0x52, 0x4d, 0x41, 0x4c, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x4a, 0x53, 0x5f, - 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x4a, 0x53, 0x5f, 0x4e, - 0x55, 0x4d, 0x42, 0x45, 0x52, 0x10, 0x02, 0x22, 0x55, 0x0a, 0x0f, 0x4f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x15, 0x0a, 0x11, 0x52, 0x45, - 0x54, 0x45, 0x4e, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, - 0x00, 0x12, 0x15, 0x0a, 0x11, 0x52, 0x45, 0x54, 0x45, 0x4e, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, - 0x55, 0x4e, 0x54, 0x49, 0x4d, 0x45, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x52, 0x45, 0x54, 0x45, - 0x4e, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x10, 0x02, 0x22, 0x8c, - 0x02, 0x0a, 0x10, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x17, 0x0a, 0x13, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, - 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x49, 0x4c, 0x45, - 0x10, 0x01, 0x12, 0x1f, 0x0a, 0x1b, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x4e, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x41, 0x4e, 0x47, - 0x45, 0x10, 0x02, 0x12, 0x17, 0x0a, 0x13, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0x03, 0x12, 0x15, 0x0a, 0x11, - 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x49, 0x45, 0x4c, - 0x44, 0x10, 0x04, 0x12, 0x15, 0x0a, 0x11, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x4f, 0x4e, 0x45, 0x4f, 0x46, 0x10, 0x05, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x41, - 0x52, 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x10, 0x06, - 0x12, 0x1a, 0x0a, 0x16, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x10, 0x07, 0x12, 0x17, 0x0a, 0x13, - 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x45, 0x52, 0x56, - 0x49, 0x43, 0x45, 0x10, 0x08, 0x12, 0x16, 0x0a, 0x12, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, - 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x10, 0x09, 0x2a, 0x09, 0x08, - 0xe8, 0x07, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x4a, 0x04, - 0x08, 0x12, 0x10, 0x13, 0x22, 0xac, 0x01, 0x0a, 0x0c, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x4f, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x37, 0x0a, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, - 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, - 0x65, 0x53, 0x65, 0x74, 0x52, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x58, - 0x0a, 0x14, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x5f, - 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xe7, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, - 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2a, 0x09, 0x08, 0xe8, 0x07, 0x10, 0x80, 0x80, - 0x80, 0x80, 0x02, 0x22, 0xd1, 0x02, 0x0a, 0x0b, 0x45, 0x6e, 0x75, 0x6d, 0x4f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x61, 0x6c, 0x69, - 0x61, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x41, - 0x6c, 0x69, 0x61, 0x73, 0x12, 0x25, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, - 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, - 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x56, 0x0a, 0x26, 0x64, - 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, - 0x5f, 0x6a, 0x73, 0x6f, 0x6e, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x66, - 0x6c, 0x69, 0x63, 0x74, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x42, 0x02, 0x18, 0x01, 0x52, - 0x22, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x4c, 0x65, 0x67, 0x61, 0x63, - 0x79, 0x4a, 0x73, 0x6f, 0x6e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, - 0x63, 0x74, 0x73, 0x12, 0x37, 0x0a, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, - 0x65, 0x74, 0x52, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x58, 0x0a, 0x14, - 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xe7, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, + 0x02, 0x4a, 0x04, 0x08, 0x2a, 0x10, 0x2b, 0x4a, 0x04, 0x08, 0x26, 0x10, 0x27, 0x52, 0x14, 0x70, + 0x68, 0x70, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x73, 0x22, 0xf4, 0x03, 0x0a, 0x0e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3c, 0x0a, 0x17, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x77, 0x69, 0x72, 0x65, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x14, + 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x57, 0x69, 0x72, 0x65, 0x46, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x12, 0x4c, 0x0a, 0x1f, 0x6e, 0x6f, 0x5f, 0x73, 0x74, 0x61, 0x6e, 0x64, + 0x61, 0x72, 0x64, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x5f, 0x61, + 0x63, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, + 0x61, 0x6c, 0x73, 0x65, 0x52, 0x1c, 0x6e, 0x6f, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, + 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, + 0x6f, 0x72, 0x12, 0x25, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0a, 0x64, + 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x70, + 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x6d, 0x61, + 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x56, 0x0a, 0x26, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, + 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x5f, 0x6a, 0x73, 0x6f, 0x6e, + 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x73, + 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x42, 0x02, 0x18, 0x01, 0x52, 0x22, 0x64, 0x65, 0x70, 0x72, + 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x4a, 0x73, 0x6f, 0x6e, + 0x46, 0x69, 0x65, 0x6c, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x73, 0x12, 0x37, + 0x0a, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x52, 0x08, 0x66, + 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x58, 0x0a, 0x14, 0x75, 0x6e, 0x69, 0x6e, 0x74, + 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0xe7, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, + 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x13, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, - 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2a, 0x09, 0x08, 0xe8, 0x07, 0x10, 0x80, 0x80, 0x80, 0x80, - 0x02, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x22, 0x81, 0x02, 0x0a, 0x10, 0x45, 0x6e, 0x75, 0x6d, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x25, 0x0a, 0x0a, - 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, - 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, - 0x74, 0x65, 0x64, 0x12, 0x37, 0x0a, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, - 0x65, 0x74, 0x52, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x28, 0x0a, 0x0c, - 0x64, 0x65, 0x62, 0x75, 0x67, 0x5f, 0x72, 0x65, 0x64, 0x61, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, + 0x6e, 0x2a, 0x09, 0x08, 0xe8, 0x07, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x4a, 0x04, 0x08, 0x04, + 0x10, 0x05, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, 0x4a, 0x04, + 0x08, 0x08, 0x10, 0x09, 0x4a, 0x04, 0x08, 0x09, 0x10, 0x0a, 0x22, 0x9d, 0x0d, 0x0a, 0x0c, 0x46, + 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x41, 0x0a, 0x05, 0x63, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, + 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x43, 0x54, 0x79, 0x70, 0x65, 0x3a, + 0x06, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x52, 0x05, 0x63, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, + 0x0a, 0x06, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, + 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x12, 0x47, 0x0a, 0x06, 0x6a, 0x73, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4a, 0x53, 0x54, 0x79, 0x70, 0x65, 0x3a, 0x09, 0x4a, 0x53, + 0x5f, 0x4e, 0x4f, 0x52, 0x4d, 0x41, 0x4c, 0x52, 0x06, 0x6a, 0x73, 0x74, 0x79, 0x70, 0x65, 0x12, + 0x19, 0x0a, 0x04, 0x6c, 0x61, 0x7a, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, + 0x61, 0x6c, 0x73, 0x65, 0x52, 0x04, 0x6c, 0x61, 0x7a, 0x79, 0x12, 0x2e, 0x0a, 0x0f, 0x75, 0x6e, + 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x5f, 0x6c, 0x61, 0x7a, 0x79, 0x18, 0x0f, 0x20, + 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0e, 0x75, 0x6e, 0x76, 0x65, + 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x4c, 0x61, 0x7a, 0x79, 0x12, 0x25, 0x0a, 0x0a, 0x64, 0x65, + 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, + 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, + 0x64, 0x12, 0x19, 0x0a, 0x04, 0x77, 0x65, 0x61, 0x6b, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x3a, + 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x04, 0x77, 0x65, 0x61, 0x6b, 0x12, 0x28, 0x0a, 0x0c, + 0x64, 0x65, 0x62, 0x75, 0x67, 0x5f, 0x72, 0x65, 0x64, 0x61, 0x63, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0b, 0x64, 0x65, 0x62, 0x75, 0x67, - 0x52, 0x65, 0x64, 0x61, 0x63, 0x74, 0x12, 0x58, 0x0a, 0x14, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, + 0x52, 0x65, 0x64, 0x61, 0x63, 0x74, 0x12, 0x4b, 0x0a, 0x09, 0x72, 0x65, 0x74, 0x65, 0x6e, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, + 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x72, 0x65, 0x74, 0x65, 0x6e, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x48, 0x0a, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x18, 0x13, + 0x20, 0x03, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, + 0x54, 0x79, 0x70, 0x65, 0x52, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x12, 0x57, 0x0a, + 0x10, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, + 0x73, 0x18, 0x14, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, + 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x0f, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, + 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x37, 0x0a, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, + 0x65, 0x73, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, + 0x72, 0x65, 0x53, 0x65, 0x74, 0x52, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, + 0x55, 0x0a, 0x0f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, + 0x72, 0x74, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, + 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, + 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x0e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, + 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x58, 0x0a, 0x14, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xe7, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x2a, 0x09, 0x08, 0xe8, 0x07, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x22, 0xd5, 0x01, 0x0a, 0x0e, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x37, - 0x0a, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x22, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x52, 0x08, 0x66, - 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x25, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, - 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x21, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, - 0x73, 0x65, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x58, - 0x0a, 0x14, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x5f, - 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xe7, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, + 0x1a, 0x5a, 0x0a, 0x0e, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x66, 0x61, 0x75, + 0x6c, 0x74, 0x12, 0x32, 0x0a, 0x07, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x65, + 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x96, 0x02, 0x0a, + 0x0e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x12, + 0x47, 0x0a, 0x12, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x74, 0x72, 0x6f, + 0x64, 0x75, 0x63, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x64, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, + 0x74, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, 0x64, 0x12, 0x47, 0x0a, 0x12, 0x65, 0x64, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x11, + 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, + 0x64, 0x12, 0x2f, 0x0a, 0x13, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, + 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x61, 0x72, 0x6e, 0x69, + 0x6e, 0x67, 0x12, 0x41, 0x0a, 0x0f, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, + 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x64, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x22, 0x2f, 0x0a, 0x05, 0x43, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0a, + 0x0a, 0x06, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x43, 0x4f, + 0x52, 0x44, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x50, + 0x49, 0x45, 0x43, 0x45, 0x10, 0x02, 0x22, 0x35, 0x0a, 0x06, 0x4a, 0x53, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x0d, 0x0a, 0x09, 0x4a, 0x53, 0x5f, 0x4e, 0x4f, 0x52, 0x4d, 0x41, 0x4c, 0x10, 0x00, 0x12, + 0x0d, 0x0a, 0x09, 0x4a, 0x53, 0x5f, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x0d, + 0x0a, 0x09, 0x4a, 0x53, 0x5f, 0x4e, 0x55, 0x4d, 0x42, 0x45, 0x52, 0x10, 0x02, 0x22, 0x55, 0x0a, + 0x0f, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x15, 0x0a, 0x11, 0x52, 0x45, 0x54, 0x45, 0x4e, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, + 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, 0x52, 0x45, 0x54, 0x45, 0x4e, + 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x55, 0x4e, 0x54, 0x49, 0x4d, 0x45, 0x10, 0x01, 0x12, 0x14, + 0x0a, 0x10, 0x52, 0x45, 0x54, 0x45, 0x4e, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x4f, 0x55, 0x52, + 0x43, 0x45, 0x10, 0x02, 0x22, 0x8c, 0x02, 0x0a, 0x10, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x54, + 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x17, 0x0a, 0x13, 0x54, 0x41, 0x52, + 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, + 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x46, 0x49, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x1f, 0x0a, 0x1b, 0x54, 0x41, 0x52, 0x47, + 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x4e, 0x53, 0x49, 0x4f, + 0x4e, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x10, 0x02, 0x12, 0x17, 0x0a, 0x13, 0x54, 0x41, 0x52, + 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, + 0x10, 0x03, 0x12, 0x15, 0x0a, 0x11, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x10, 0x04, 0x12, 0x15, 0x0a, 0x11, 0x54, 0x41, 0x52, + 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4f, 0x4e, 0x45, 0x4f, 0x46, 0x10, 0x05, + 0x12, 0x14, 0x0a, 0x10, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x45, 0x4e, 0x55, 0x4d, 0x10, 0x06, 0x12, 0x1a, 0x0a, 0x16, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, + 0x10, 0x07, 0x12, 0x17, 0x0a, 0x13, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x10, 0x08, 0x12, 0x16, 0x0a, 0x12, 0x54, + 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, + 0x44, 0x10, 0x09, 0x2a, 0x09, 0x08, 0xe8, 0x07, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x4a, 0x04, + 0x08, 0x04, 0x10, 0x05, 0x4a, 0x04, 0x08, 0x12, 0x10, 0x13, 0x22, 0xac, 0x01, 0x0a, 0x0c, 0x4f, + 0x6e, 0x65, 0x6f, 0x66, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x37, 0x0a, 0x08, 0x66, + 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, - 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2a, 0x09, 0x08, 0xe8, 0x07, 0x10, 0x80, 0x80, - 0x80, 0x80, 0x02, 0x22, 0x99, 0x03, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4f, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x25, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, - 0x74, 0x65, 0x64, 0x18, 0x21, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, - 0x52, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x71, 0x0a, 0x11, - 0x69, 0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x6c, 0x65, 0x76, 0x65, - 0x6c, 0x18, 0x22, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, - 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x49, 0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65, - 0x6e, 0x63, 0x79, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x3a, 0x13, 0x49, 0x44, 0x45, 0x4d, 0x50, 0x4f, - 0x54, 0x45, 0x4e, 0x43, 0x59, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x52, 0x10, 0x69, - 0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, - 0x37, 0x0a, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x23, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x52, 0x08, - 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x58, 0x0a, 0x14, 0x75, 0x6e, 0x69, 0x6e, - 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0xe7, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x75, - 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x22, 0x50, 0x0a, 0x10, 0x49, 0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, - 0x79, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x17, 0x0a, 0x13, 0x49, 0x44, 0x45, 0x4d, 0x50, 0x4f, - 0x54, 0x45, 0x4e, 0x43, 0x59, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, - 0x13, 0x0a, 0x0f, 0x4e, 0x4f, 0x5f, 0x53, 0x49, 0x44, 0x45, 0x5f, 0x45, 0x46, 0x46, 0x45, 0x43, - 0x54, 0x53, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x49, 0x44, 0x45, 0x4d, 0x50, 0x4f, 0x54, 0x45, - 0x4e, 0x54, 0x10, 0x02, 0x2a, 0x09, 0x08, 0xe8, 0x07, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x22, - 0x9a, 0x03, 0x0a, 0x13, 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, - 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x41, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, - 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4e, 0x61, 0x6d, 0x65, - 0x50, 0x61, 0x72, 0x74, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x69, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, - 0x65, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x10, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x49, 0x6e, 0x74, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, - 0x69, 0x6e, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x10, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x49, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0b, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x73, 0x74, 0x72, 0x69, - 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x67, 0x67, 0x72, 0x65, - 0x67, 0x61, 0x74, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0e, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x1a, 0x4a, 0x0a, 0x08, 0x4e, 0x61, 0x6d, 0x65, 0x50, 0x61, 0x72, 0x74, 0x12, 0x1b, 0x0a, 0x09, - 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x02, 0x28, 0x09, 0x52, - 0x08, 0x6e, 0x61, 0x6d, 0x65, 0x50, 0x61, 0x72, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x73, 0x5f, - 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x02, 0x28, 0x08, 0x52, - 0x0b, 0x69, 0x73, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x8c, 0x0a, 0x0a, - 0x0a, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x12, 0x8b, 0x01, 0x0a, 0x0e, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, - 0x74, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x42, - 0x39, 0x88, 0x01, 0x01, 0x98, 0x01, 0x04, 0x98, 0x01, 0x01, 0xa2, 0x01, 0x0d, 0x12, 0x08, 0x45, - 0x58, 0x50, 0x4c, 0x49, 0x43, 0x49, 0x54, 0x18, 0xe6, 0x07, 0xa2, 0x01, 0x0d, 0x12, 0x08, 0x49, - 0x4d, 0x50, 0x4c, 0x49, 0x43, 0x49, 0x54, 0x18, 0xe7, 0x07, 0xa2, 0x01, 0x0d, 0x12, 0x08, 0x45, - 0x58, 0x50, 0x4c, 0x49, 0x43, 0x49, 0x54, 0x18, 0xe8, 0x07, 0x52, 0x0d, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x66, 0x0a, 0x09, 0x65, 0x6e, 0x75, - 0x6d, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x67, + 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x52, 0x08, 0x66, 0x65, 0x61, 0x74, + 0x75, 0x72, 0x65, 0x73, 0x12, 0x58, 0x0a, 0x14, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, + 0x72, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xe7, 0x07, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, + 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x75, 0x6e, 0x69, 0x6e, 0x74, + 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2a, 0x09, + 0x08, 0xe8, 0x07, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x22, 0xd1, 0x02, 0x0a, 0x0b, 0x45, 0x6e, + 0x75, 0x6d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x6c, 0x6c, + 0x6f, 0x77, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, + 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x25, 0x0a, 0x0a, 0x64, 0x65, + 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, + 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, + 0x64, 0x12, 0x56, 0x0a, 0x26, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x5f, + 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x5f, 0x6a, 0x73, 0x6f, 0x6e, 0x5f, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x08, 0x42, 0x02, 0x18, 0x01, 0x52, 0x22, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, + 0x64, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x4a, 0x73, 0x6f, 0x6e, 0x46, 0x69, 0x65, 0x6c, 0x64, + 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x73, 0x12, 0x37, 0x0a, 0x08, 0x66, 0x65, 0x61, + 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, + 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x52, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, + 0x65, 0x73, 0x12, 0x58, 0x0a, 0x14, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, + 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xe7, 0x07, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, + 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, + 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2a, 0x09, 0x08, 0xe8, + 0x07, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x22, 0xd8, 0x02, + 0x0a, 0x10, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x12, 0x25, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0a, 0x64, + 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x37, 0x0a, 0x08, 0x66, 0x65, 0x61, + 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, + 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x52, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, + 0x65, 0x73, 0x12, 0x28, 0x0a, 0x0c, 0x64, 0x65, 0x62, 0x75, 0x67, 0x5f, 0x72, 0x65, 0x64, 0x61, + 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, + 0x0b, 0x64, 0x65, 0x62, 0x75, 0x67, 0x52, 0x65, 0x64, 0x61, 0x63, 0x74, 0x12, 0x55, 0x0a, 0x0f, + 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x75, 0x70, 0x70, + 0x6f, 0x72, 0x74, 0x52, 0x0e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x75, 0x70, 0x70, + 0x6f, 0x72, 0x74, 0x12, 0x58, 0x0a, 0x14, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, + 0x65, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xe7, 0x07, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, + 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, + 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2a, 0x09, 0x08, + 0xe8, 0x07, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x22, 0xd5, 0x01, 0x0a, 0x0e, 0x53, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x37, 0x0a, 0x08, 0x66, + 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x22, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x52, 0x08, 0x66, 0x65, 0x61, 0x74, + 0x75, 0x72, 0x65, 0x73, 0x12, 0x25, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, + 0x65, 0x64, 0x18, 0x21, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, + 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x58, 0x0a, 0x14, 0x75, + 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0xe7, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x69, + 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x13, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2a, 0x09, 0x08, 0xe8, 0x07, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, + 0x22, 0x99, 0x03, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x12, 0x25, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, + 0x18, 0x21, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0a, 0x64, + 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x71, 0x0a, 0x11, 0x69, 0x64, 0x65, + 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x22, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x49, 0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, + 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x3a, 0x13, 0x49, 0x44, 0x45, 0x4d, 0x50, 0x4f, 0x54, 0x45, 0x4e, + 0x43, 0x59, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x52, 0x10, 0x69, 0x64, 0x65, 0x6d, + 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x37, 0x0a, 0x08, + 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x23, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x52, 0x08, 0x66, 0x65, 0x61, + 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x58, 0x0a, 0x14, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, + 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xe7, 0x07, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, + 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x75, 0x6e, 0x69, 0x6e, + 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, + 0x50, 0x0a, 0x10, 0x49, 0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x4c, 0x65, + 0x76, 0x65, 0x6c, 0x12, 0x17, 0x0a, 0x13, 0x49, 0x44, 0x45, 0x4d, 0x50, 0x4f, 0x54, 0x45, 0x4e, + 0x43, 0x59, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, + 0x4e, 0x4f, 0x5f, 0x53, 0x49, 0x44, 0x45, 0x5f, 0x45, 0x46, 0x46, 0x45, 0x43, 0x54, 0x53, 0x10, + 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x49, 0x44, 0x45, 0x4d, 0x50, 0x4f, 0x54, 0x45, 0x4e, 0x54, 0x10, + 0x02, 0x2a, 0x09, 0x08, 0xe8, 0x07, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x22, 0x9a, 0x03, 0x0a, + 0x13, 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x41, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, + 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x50, 0x61, 0x72, + 0x74, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x69, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x66, 0x69, 0x65, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x69, + 0x6e, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x10, + 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x49, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x12, 0x2c, 0x0a, 0x12, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x69, 0x6e, 0x74, + 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x6e, 0x65, + 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x49, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x21, + 0x0a, 0x0c, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x01, 0x52, 0x0b, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, + 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, + 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x4a, 0x0a, + 0x08, 0x4e, 0x61, 0x6d, 0x65, 0x50, 0x61, 0x72, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x61, 0x6d, + 0x65, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x02, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x61, + 0x6d, 0x65, 0x50, 0x61, 0x72, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x73, 0x5f, 0x65, 0x78, 0x74, + 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x02, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x73, + 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xa7, 0x0a, 0x0a, 0x0a, 0x46, 0x65, + 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x12, 0x91, 0x01, 0x0a, 0x0e, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x5f, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x2e, 0x46, + 0x69, 0x65, 0x6c, 0x64, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x42, 0x3f, 0x88, 0x01, + 0x01, 0x98, 0x01, 0x04, 0x98, 0x01, 0x01, 0xa2, 0x01, 0x0d, 0x12, 0x08, 0x45, 0x58, 0x50, 0x4c, + 0x49, 0x43, 0x49, 0x54, 0x18, 0xe6, 0x07, 0xa2, 0x01, 0x0d, 0x12, 0x08, 0x49, 0x4d, 0x50, 0x4c, + 0x49, 0x43, 0x49, 0x54, 0x18, 0xe7, 0x07, 0xa2, 0x01, 0x0d, 0x12, 0x08, 0x45, 0x58, 0x50, 0x4c, + 0x49, 0x43, 0x49, 0x54, 0x18, 0xe8, 0x07, 0xb2, 0x01, 0x03, 0x08, 0xe8, 0x07, 0x52, 0x0d, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x6c, 0x0a, 0x09, + 0x65, 0x6e, 0x75, 0x6d, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x2e, 0x45, 0x6e, 0x75, + 0x6d, 0x54, 0x79, 0x70, 0x65, 0x42, 0x29, 0x88, 0x01, 0x01, 0x98, 0x01, 0x06, 0x98, 0x01, 0x01, + 0xa2, 0x01, 0x0b, 0x12, 0x06, 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0x18, 0xe6, 0x07, 0xa2, 0x01, + 0x09, 0x12, 0x04, 0x4f, 0x50, 0x45, 0x4e, 0x18, 0xe7, 0x07, 0xb2, 0x01, 0x03, 0x08, 0xe8, 0x07, + 0x52, 0x08, 0x65, 0x6e, 0x75, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x98, 0x01, 0x0a, 0x17, 0x72, + 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x65, 0x6e, + 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, - 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x54, 0x79, - 0x70, 0x65, 0x42, 0x23, 0x88, 0x01, 0x01, 0x98, 0x01, 0x06, 0x98, 0x01, 0x01, 0xa2, 0x01, 0x0b, - 0x12, 0x06, 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0x18, 0xe6, 0x07, 0xa2, 0x01, 0x09, 0x12, 0x04, - 0x4f, 0x50, 0x45, 0x4e, 0x18, 0xe7, 0x07, 0x52, 0x08, 0x65, 0x6e, 0x75, 0x6d, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x92, 0x01, 0x0a, 0x17, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, - 0x2e, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x45, 0x6e, - 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x27, 0x88, 0x01, 0x01, 0x98, 0x01, 0x04, 0x98, 0x01, - 0x01, 0xa2, 0x01, 0x0d, 0x12, 0x08, 0x45, 0x58, 0x50, 0x41, 0x4e, 0x44, 0x45, 0x44, 0x18, 0xe6, - 0x07, 0xa2, 0x01, 0x0b, 0x12, 0x06, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x44, 0x18, 0xe7, 0x07, 0x52, - 0x15, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x45, 0x6e, - 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x78, 0x0a, 0x0f, 0x75, 0x74, 0x66, 0x38, 0x5f, 0x76, - 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x2e, 0x55, 0x74, 0x66, - 0x38, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x23, 0x88, 0x01, 0x01, - 0x98, 0x01, 0x04, 0x98, 0x01, 0x01, 0xa2, 0x01, 0x09, 0x12, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x18, - 0xe6, 0x07, 0xa2, 0x01, 0x0b, 0x12, 0x06, 0x56, 0x45, 0x52, 0x49, 0x46, 0x59, 0x18, 0xe7, 0x07, - 0x52, 0x0e, 0x75, 0x74, 0x66, 0x38, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x78, 0x0a, 0x10, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x65, 0x6e, 0x63, 0x6f, - 0x64, 0x69, 0x6e, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, - 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, - 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x20, 0x88, 0x01, 0x01, 0x98, 0x01, 0x04, 0x98, - 0x01, 0x01, 0xa2, 0x01, 0x14, 0x12, 0x0f, 0x4c, 0x45, 0x4e, 0x47, 0x54, 0x48, 0x5f, 0x50, 0x52, - 0x45, 0x46, 0x49, 0x58, 0x45, 0x44, 0x18, 0xe6, 0x07, 0x52, 0x0f, 0x6d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x7c, 0x0a, 0x0b, 0x6a, 0x73, - 0x6f, 0x6e, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x2e, 0x4a, 0x73, 0x6f, - 0x6e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x42, 0x33, 0x88, 0x01, 0x01, 0x98, 0x01, 0x03, 0x98, - 0x01, 0x06, 0x98, 0x01, 0x01, 0xa2, 0x01, 0x17, 0x12, 0x12, 0x4c, 0x45, 0x47, 0x41, 0x43, 0x59, - 0x5f, 0x42, 0x45, 0x53, 0x54, 0x5f, 0x45, 0x46, 0x46, 0x4f, 0x52, 0x54, 0x18, 0xe6, 0x07, 0xa2, - 0x01, 0x0a, 0x12, 0x05, 0x41, 0x4c, 0x4c, 0x4f, 0x57, 0x18, 0xe7, 0x07, 0x52, 0x0a, 0x6a, 0x73, - 0x6f, 0x6e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x5c, 0x0a, 0x0d, 0x46, 0x69, 0x65, 0x6c, - 0x64, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x1a, 0x0a, 0x16, 0x46, 0x49, 0x45, - 0x4c, 0x44, 0x5f, 0x50, 0x52, 0x45, 0x53, 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, - 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x45, 0x58, 0x50, 0x4c, 0x49, 0x43, 0x49, - 0x54, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x49, 0x4d, 0x50, 0x4c, 0x49, 0x43, 0x49, 0x54, 0x10, - 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x45, 0x47, 0x41, 0x43, 0x59, 0x5f, 0x52, 0x45, 0x51, 0x55, - 0x49, 0x52, 0x45, 0x44, 0x10, 0x03, 0x22, 0x37, 0x0a, 0x08, 0x45, 0x6e, 0x75, 0x6d, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x4f, 0x50, 0x45, - 0x4e, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0x10, 0x02, 0x22, - 0x56, 0x0a, 0x15, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, - 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x23, 0x0a, 0x1f, 0x52, 0x45, 0x50, 0x45, - 0x41, 0x54, 0x45, 0x44, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x45, 0x4e, 0x43, 0x4f, 0x44, - 0x49, 0x4e, 0x47, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0a, 0x0a, - 0x06, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x45, 0x58, 0x50, - 0x41, 0x4e, 0x44, 0x45, 0x44, 0x10, 0x02, 0x22, 0x43, 0x0a, 0x0e, 0x55, 0x74, 0x66, 0x38, 0x56, - 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x17, 0x55, 0x54, 0x46, - 0x38, 0x5f, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x4b, - 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x56, 0x45, 0x52, 0x49, 0x46, 0x59, - 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x03, 0x22, 0x53, 0x0a, 0x0f, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x12, - 0x1c, 0x0a, 0x18, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x45, 0x4e, 0x43, 0x4f, 0x44, - 0x49, 0x4e, 0x47, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x13, 0x0a, - 0x0f, 0x4c, 0x45, 0x4e, 0x47, 0x54, 0x48, 0x5f, 0x50, 0x52, 0x45, 0x46, 0x49, 0x58, 0x45, 0x44, - 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x44, 0x45, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x45, 0x44, 0x10, - 0x02, 0x22, 0x48, 0x0a, 0x0a, 0x4a, 0x73, 0x6f, 0x6e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, - 0x17, 0x0a, 0x13, 0x4a, 0x53, 0x4f, 0x4e, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x5f, 0x55, - 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x41, 0x4c, 0x4c, 0x4f, - 0x57, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x4c, 0x45, 0x47, 0x41, 0x43, 0x59, 0x5f, 0x42, 0x45, - 0x53, 0x54, 0x5f, 0x45, 0x46, 0x46, 0x4f, 0x52, 0x54, 0x10, 0x02, 0x2a, 0x06, 0x08, 0xe8, 0x07, - 0x10, 0xe9, 0x07, 0x2a, 0x06, 0x08, 0xe9, 0x07, 0x10, 0xea, 0x07, 0x2a, 0x06, 0x08, 0xea, 0x07, - 0x10, 0xeb, 0x07, 0x2a, 0x06, 0x08, 0x8b, 0x4e, 0x10, 0x90, 0x4e, 0x2a, 0x06, 0x08, 0x90, 0x4e, - 0x10, 0x91, 0x4e, 0x4a, 0x06, 0x08, 0xe7, 0x07, 0x10, 0xe8, 0x07, 0x22, 0xfe, 0x02, 0x0a, 0x12, - 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, - 0x74, 0x73, 0x12, 0x58, 0x0a, 0x08, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, - 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, - 0x65, 0x53, 0x65, 0x74, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x66, 0x61, 0x75, - 0x6c, 0x74, 0x52, 0x08, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x41, 0x0a, 0x0f, - 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x0e, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x41, 0x0a, 0x0f, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x65, 0x64, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x0e, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x45, 0x64, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x1a, 0x87, 0x01, 0x0a, 0x18, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, - 0x74, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, - 0x32, 0x0a, 0x07, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x18, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x65, 0x64, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x37, 0x0a, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, - 0x65, 0x74, 0x52, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x22, 0xa7, 0x02, 0x0a, - 0x0e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, - 0x44, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x49, 0x6e, - 0x66, 0x6f, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x6c, 0x6f, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0xce, 0x01, 0x0a, 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, - 0x42, 0x02, 0x10, 0x01, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x16, 0x0a, 0x04, 0x73, 0x70, - 0x61, 0x6e, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x42, 0x02, 0x10, 0x01, 0x52, 0x04, 0x73, 0x70, - 0x61, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x6c, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, - 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6c, 0x65, - 0x61, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x2b, 0x0a, - 0x11, 0x74, 0x72, 0x61, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, - 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x74, 0x72, 0x61, 0x69, 0x6c, 0x69, - 0x6e, 0x67, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x3a, 0x0a, 0x19, 0x6c, 0x65, - 0x61, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x63, - 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x17, 0x6c, - 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x43, 0x6f, - 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x22, 0xd0, 0x02, 0x0a, 0x11, 0x47, 0x65, 0x6e, 0x65, 0x72, - 0x61, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x4d, 0x0a, 0x0a, - 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x64, 0x65, - 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x0a, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0xeb, 0x01, 0x0a, 0x0a, - 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x04, 0x70, 0x61, - 0x74, 0x68, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x42, 0x02, 0x10, 0x01, 0x52, 0x04, 0x70, 0x61, - 0x74, 0x68, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x66, 0x69, 0x6c, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x46, - 0x69, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x65, 0x67, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x05, 0x62, 0x65, 0x67, 0x69, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x12, 0x52, 0x0a, 0x08, 0x73, - 0x65, 0x6d, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x36, 0x2e, + 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x2e, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, + 0x65, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x42, + 0x2d, 0x88, 0x01, 0x01, 0x98, 0x01, 0x04, 0x98, 0x01, 0x01, 0xa2, 0x01, 0x0d, 0x12, 0x08, 0x45, + 0x58, 0x50, 0x41, 0x4e, 0x44, 0x45, 0x44, 0x18, 0xe6, 0x07, 0xa2, 0x01, 0x0b, 0x12, 0x06, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x44, 0x18, 0xe7, 0x07, 0xb2, 0x01, 0x03, 0x08, 0xe8, 0x07, 0x52, 0x15, + 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x45, 0x6e, 0x63, + 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x7e, 0x0a, 0x0f, 0x75, 0x74, 0x66, 0x38, 0x5f, 0x76, 0x61, + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x2e, 0x55, 0x74, 0x66, 0x38, + 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x29, 0x88, 0x01, 0x01, 0x98, + 0x01, 0x04, 0x98, 0x01, 0x01, 0xa2, 0x01, 0x09, 0x12, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x18, 0xe6, + 0x07, 0xa2, 0x01, 0x0b, 0x12, 0x06, 0x56, 0x45, 0x52, 0x49, 0x46, 0x59, 0x18, 0xe7, 0x07, 0xb2, + 0x01, 0x03, 0x08, 0xe8, 0x07, 0x52, 0x0e, 0x75, 0x74, 0x66, 0x38, 0x56, 0x61, 0x6c, 0x69, 0x64, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x7e, 0x0a, 0x10, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x5f, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x2e, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x26, 0x88, 0x01, + 0x01, 0x98, 0x01, 0x04, 0x98, 0x01, 0x01, 0xa2, 0x01, 0x14, 0x12, 0x0f, 0x4c, 0x45, 0x4e, 0x47, + 0x54, 0x48, 0x5f, 0x50, 0x52, 0x45, 0x46, 0x49, 0x58, 0x45, 0x44, 0x18, 0xe6, 0x07, 0xb2, 0x01, + 0x03, 0x08, 0xe8, 0x07, 0x52, 0x0f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x6e, 0x63, + 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x82, 0x01, 0x0a, 0x0b, 0x6a, 0x73, 0x6f, 0x6e, 0x5f, 0x66, + 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, + 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x2e, 0x4a, 0x73, 0x6f, 0x6e, 0x46, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x42, 0x39, 0x88, 0x01, 0x01, 0x98, 0x01, 0x03, 0x98, 0x01, 0x06, 0x98, 0x01, + 0x01, 0xa2, 0x01, 0x17, 0x12, 0x12, 0x4c, 0x45, 0x47, 0x41, 0x43, 0x59, 0x5f, 0x42, 0x45, 0x53, + 0x54, 0x5f, 0x45, 0x46, 0x46, 0x4f, 0x52, 0x54, 0x18, 0xe6, 0x07, 0xa2, 0x01, 0x0a, 0x12, 0x05, + 0x41, 0x4c, 0x4c, 0x4f, 0x57, 0x18, 0xe7, 0x07, 0xb2, 0x01, 0x03, 0x08, 0xe8, 0x07, 0x52, 0x0a, + 0x6a, 0x73, 0x6f, 0x6e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x5c, 0x0a, 0x0d, 0x46, 0x69, + 0x65, 0x6c, 0x64, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x1a, 0x0a, 0x16, 0x46, + 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x50, 0x52, 0x45, 0x53, 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x55, 0x4e, + 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x45, 0x58, 0x50, 0x4c, 0x49, + 0x43, 0x49, 0x54, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x49, 0x4d, 0x50, 0x4c, 0x49, 0x43, 0x49, + 0x54, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x45, 0x47, 0x41, 0x43, 0x59, 0x5f, 0x52, 0x45, + 0x51, 0x55, 0x49, 0x52, 0x45, 0x44, 0x10, 0x03, 0x22, 0x37, 0x0a, 0x08, 0x45, 0x6e, 0x75, 0x6d, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x4f, + 0x50, 0x45, 0x4e, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0x10, + 0x02, 0x22, 0x56, 0x0a, 0x15, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x46, 0x69, 0x65, + 0x6c, 0x64, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x23, 0x0a, 0x1f, 0x52, 0x45, + 0x50, 0x45, 0x41, 0x54, 0x45, 0x44, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x45, 0x4e, 0x43, + 0x4f, 0x44, 0x49, 0x4e, 0x47, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, + 0x0a, 0x0a, 0x06, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x45, + 0x58, 0x50, 0x41, 0x4e, 0x44, 0x45, 0x44, 0x10, 0x02, 0x22, 0x49, 0x0a, 0x0e, 0x55, 0x74, 0x66, + 0x38, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x17, 0x55, + 0x54, 0x46, 0x38, 0x5f, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, + 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x56, 0x45, 0x52, 0x49, + 0x46, 0x59, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x03, 0x22, 0x04, + 0x08, 0x01, 0x10, 0x01, 0x22, 0x53, 0x0a, 0x0f, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, + 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x1c, 0x0a, 0x18, 0x4d, 0x45, 0x53, 0x53, 0x41, + 0x47, 0x45, 0x5f, 0x45, 0x4e, 0x43, 0x4f, 0x44, 0x49, 0x4e, 0x47, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, + 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x45, 0x4e, 0x47, 0x54, 0x48, 0x5f, + 0x50, 0x52, 0x45, 0x46, 0x49, 0x58, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x44, 0x45, + 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x45, 0x44, 0x10, 0x02, 0x22, 0x48, 0x0a, 0x0a, 0x4a, 0x73, 0x6f, + 0x6e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x17, 0x0a, 0x13, 0x4a, 0x53, 0x4f, 0x4e, 0x5f, + 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, + 0x12, 0x09, 0x0a, 0x05, 0x41, 0x4c, 0x4c, 0x4f, 0x57, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x4c, + 0x45, 0x47, 0x41, 0x43, 0x59, 0x5f, 0x42, 0x45, 0x53, 0x54, 0x5f, 0x45, 0x46, 0x46, 0x4f, 0x52, + 0x54, 0x10, 0x02, 0x2a, 0x06, 0x08, 0xe8, 0x07, 0x10, 0x8b, 0x4e, 0x2a, 0x06, 0x08, 0x8b, 0x4e, + 0x10, 0x90, 0x4e, 0x2a, 0x06, 0x08, 0x90, 0x4e, 0x10, 0x91, 0x4e, 0x4a, 0x06, 0x08, 0xe7, 0x07, + 0x10, 0xe8, 0x07, 0x22, 0xef, 0x03, 0x0a, 0x12, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, + 0x65, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x58, 0x0a, 0x08, 0x64, 0x65, + 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, + 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, + 0x73, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x45, 0x64, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x08, 0x64, 0x65, 0x66, 0x61, + 0x75, 0x6c, 0x74, 0x73, 0x12, 0x41, 0x0a, 0x0f, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x5f, + 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, - 0x6f, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x6d, - 0x61, 0x6e, 0x74, 0x69, 0x63, 0x52, 0x08, 0x73, 0x65, 0x6d, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x22, - 0x28, 0x0a, 0x08, 0x53, 0x65, 0x6d, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x12, 0x08, 0x0a, 0x04, 0x4e, - 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x53, 0x45, 0x54, 0x10, 0x01, 0x12, 0x09, - 0x0a, 0x05, 0x41, 0x4c, 0x49, 0x41, 0x53, 0x10, 0x02, 0x2a, 0x92, 0x02, 0x0a, 0x07, 0x45, 0x64, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, - 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x44, - 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x32, 0x10, 0xe6, 0x07, 0x12, - 0x13, 0x0a, 0x0e, 0x45, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x4f, - 0x33, 0x10, 0xe7, 0x07, 0x12, 0x11, 0x0a, 0x0c, 0x45, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, - 0x32, 0x30, 0x32, 0x33, 0x10, 0xe8, 0x07, 0x12, 0x11, 0x0a, 0x0c, 0x45, 0x44, 0x49, 0x54, 0x49, - 0x4f, 0x4e, 0x5f, 0x32, 0x30, 0x32, 0x34, 0x10, 0xe9, 0x07, 0x12, 0x17, 0x0a, 0x13, 0x45, 0x44, - 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x31, 0x5f, 0x54, 0x45, 0x53, 0x54, 0x5f, 0x4f, 0x4e, 0x4c, - 0x59, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x45, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x32, - 0x5f, 0x54, 0x45, 0x53, 0x54, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x02, 0x12, 0x1d, 0x0a, 0x17, - 0x45, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x39, 0x39, 0x39, 0x39, 0x37, 0x5f, 0x54, 0x45, - 0x53, 0x54, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x9d, 0x8d, 0x06, 0x12, 0x1d, 0x0a, 0x17, 0x45, - 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x39, 0x39, 0x39, 0x39, 0x38, 0x5f, 0x54, 0x45, 0x53, - 0x54, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x9e, 0x8d, 0x06, 0x12, 0x1d, 0x0a, 0x17, 0x45, 0x44, - 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x39, 0x39, 0x39, 0x39, 0x39, 0x5f, 0x54, 0x45, 0x53, 0x54, - 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x9f, 0x8d, 0x06, 0x12, 0x13, 0x0a, 0x0b, 0x45, 0x44, 0x49, - 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x41, 0x58, 0x10, 0xff, 0xff, 0xff, 0xff, 0x07, 0x42, 0x7e, - 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x42, 0x10, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, - 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x48, 0x01, 0x5a, 0x2d, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x64, 0x65, 0x73, 0x63, - 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x70, 0x62, 0xf8, 0x01, 0x01, 0xa2, 0x02, 0x03, 0x47, 0x50, - 0x42, 0xaa, 0x02, 0x1a, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x52, 0x65, 0x66, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, + 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x41, 0x0a, 0x0f, 0x6d, 0x61, 0x78, 0x69, 0x6d, + 0x75, 0x6d, 0x5f, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x18, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x6d, 0x61, 0x78, 0x69, + 0x6d, 0x75, 0x6d, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0xf8, 0x01, 0x0a, 0x18, 0x46, + 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x32, 0x0a, 0x07, 0x65, 0x64, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x07, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4e, 0x0a, 0x14, 0x6f, + 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75, + 0x72, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, + 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x52, 0x13, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x61, + 0x62, 0x6c, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x42, 0x0a, 0x0e, 0x66, + 0x69, 0x78, 0x65, 0x64, 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, + 0x52, 0x0d, 0x66, 0x69, 0x78, 0x65, 0x64, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x4a, + 0x04, 0x08, 0x01, 0x10, 0x02, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x52, 0x08, 0x66, 0x65, 0x61, + 0x74, 0x75, 0x72, 0x65, 0x73, 0x22, 0xa7, 0x02, 0x0a, 0x0e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x43, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x44, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x4c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0xce, + 0x01, 0x0a, 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x04, 0x70, + 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x42, 0x02, 0x10, 0x01, 0x52, 0x04, 0x70, + 0x61, 0x74, 0x68, 0x12, 0x16, 0x0a, 0x04, 0x73, 0x70, 0x61, 0x6e, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x05, 0x42, 0x02, 0x10, 0x01, 0x52, 0x04, 0x73, 0x70, 0x61, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x6c, + 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6c, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x6f, + 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x74, 0x72, 0x61, 0x69, 0x6c, 0x69, + 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x10, 0x74, 0x72, 0x61, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6d, 0x6d, 0x65, + 0x6e, 0x74, 0x73, 0x12, 0x3a, 0x0a, 0x19, 0x6c, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x64, + 0x65, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, + 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x17, 0x6c, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x44, + 0x65, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x22, + 0xd0, 0x02, 0x0a, 0x11, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x64, + 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x4d, 0x0a, 0x0a, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x47, 0x65, 0x6e, 0x65, + 0x72, 0x61, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x41, 0x6e, + 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0xeb, 0x01, 0x0a, 0x0a, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x05, 0x42, 0x02, 0x10, 0x01, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x1f, 0x0a, 0x0b, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, + 0x62, 0x65, 0x67, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x62, 0x65, 0x67, + 0x69, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x03, 0x65, 0x6e, 0x64, 0x12, 0x52, 0x0a, 0x08, 0x73, 0x65, 0x6d, 0x61, 0x6e, 0x74, 0x69, 0x63, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, + 0x65, 0x64, 0x43, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x6d, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x52, 0x08, + 0x73, 0x65, 0x6d, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x22, 0x28, 0x0a, 0x08, 0x53, 0x65, 0x6d, 0x61, + 0x6e, 0x74, 0x69, 0x63, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x07, + 0x0a, 0x03, 0x53, 0x45, 0x54, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x41, 0x4c, 0x49, 0x41, 0x53, + 0x10, 0x02, 0x2a, 0xa7, 0x02, 0x0a, 0x07, 0x45, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x13, + 0x0a, 0x0f, 0x45, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, + 0x4e, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4c, + 0x45, 0x47, 0x41, 0x43, 0x59, 0x10, 0x84, 0x07, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x44, 0x49, 0x54, + 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x32, 0x10, 0xe6, 0x07, 0x12, 0x13, 0x0a, + 0x0e, 0x45, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x33, 0x10, + 0xe7, 0x07, 0x12, 0x11, 0x0a, 0x0c, 0x45, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x32, 0x30, + 0x32, 0x33, 0x10, 0xe8, 0x07, 0x12, 0x11, 0x0a, 0x0c, 0x45, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, + 0x5f, 0x32, 0x30, 0x32, 0x34, 0x10, 0xe9, 0x07, 0x12, 0x17, 0x0a, 0x13, 0x45, 0x44, 0x49, 0x54, + 0x49, 0x4f, 0x4e, 0x5f, 0x31, 0x5f, 0x54, 0x45, 0x53, 0x54, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, + 0x01, 0x12, 0x17, 0x0a, 0x13, 0x45, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x32, 0x5f, 0x54, + 0x45, 0x53, 0x54, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x02, 0x12, 0x1d, 0x0a, 0x17, 0x45, 0x44, + 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x39, 0x39, 0x39, 0x39, 0x37, 0x5f, 0x54, 0x45, 0x53, 0x54, + 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x9d, 0x8d, 0x06, 0x12, 0x1d, 0x0a, 0x17, 0x45, 0x44, 0x49, + 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x39, 0x39, 0x39, 0x39, 0x38, 0x5f, 0x54, 0x45, 0x53, 0x54, 0x5f, + 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x9e, 0x8d, 0x06, 0x12, 0x1d, 0x0a, 0x17, 0x45, 0x44, 0x49, 0x54, + 0x49, 0x4f, 0x4e, 0x5f, 0x39, 0x39, 0x39, 0x39, 0x39, 0x5f, 0x54, 0x45, 0x53, 0x54, 0x5f, 0x4f, + 0x4e, 0x4c, 0x59, 0x10, 0x9f, 0x8d, 0x06, 0x12, 0x13, 0x0a, 0x0b, 0x45, 0x44, 0x49, 0x54, 0x49, + 0x4f, 0x4e, 0x5f, 0x4d, 0x41, 0x58, 0x10, 0xff, 0xff, 0xff, 0xff, 0x07, 0x42, 0x7e, 0x0a, 0x13, + 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x42, 0x10, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, + 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x48, 0x01, 0x5a, 0x2d, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x6f, 0x72, 0x70, 0x62, 0xf8, 0x01, 0x01, 0xa2, 0x02, 0x03, 0x47, 0x50, 0x42, 0xaa, + 0x02, 0x1a, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x52, 0x65, 0x66, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, } var ( @@ -5084,8 +5242,8 @@ func file_google_protobuf_descriptor_proto_rawDescGZIP() []byte { } var file_google_protobuf_descriptor_proto_enumTypes = make([]protoimpl.EnumInfo, 17) -var file_google_protobuf_descriptor_proto_msgTypes = make([]protoimpl.MessageInfo, 32) -var file_google_protobuf_descriptor_proto_goTypes = []interface{}{ +var file_google_protobuf_descriptor_proto_msgTypes = make([]protoimpl.MessageInfo, 33) +var file_google_protobuf_descriptor_proto_goTypes = []any{ (Edition)(0), // 0: google.protobuf.Edition (ExtensionRangeOptions_VerificationState)(0), // 1: google.protobuf.ExtensionRangeOptions.VerificationState (FieldDescriptorProto_Type)(0), // 2: google.protobuf.FieldDescriptorProto.Type @@ -5131,10 +5289,11 @@ var file_google_protobuf_descriptor_proto_goTypes = []interface{}{ (*ExtensionRangeOptions_Declaration)(nil), // 42: google.protobuf.ExtensionRangeOptions.Declaration (*EnumDescriptorProto_EnumReservedRange)(nil), // 43: google.protobuf.EnumDescriptorProto.EnumReservedRange (*FieldOptions_EditionDefault)(nil), // 44: google.protobuf.FieldOptions.EditionDefault - (*UninterpretedOption_NamePart)(nil), // 45: google.protobuf.UninterpretedOption.NamePart - (*FeatureSetDefaults_FeatureSetEditionDefault)(nil), // 46: google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault - (*SourceCodeInfo_Location)(nil), // 47: google.protobuf.SourceCodeInfo.Location - (*GeneratedCodeInfo_Annotation)(nil), // 48: google.protobuf.GeneratedCodeInfo.Annotation + (*FieldOptions_FeatureSupport)(nil), // 45: google.protobuf.FieldOptions.FeatureSupport + (*UninterpretedOption_NamePart)(nil), // 46: google.protobuf.UninterpretedOption.NamePart + (*FeatureSetDefaults_FeatureSetEditionDefault)(nil), // 47: google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault + (*SourceCodeInfo_Location)(nil), // 48: google.protobuf.SourceCodeInfo.Location + (*GeneratedCodeInfo_Annotation)(nil), // 49: google.protobuf.GeneratedCodeInfo.Annotation } var file_google_protobuf_descriptor_proto_depIdxs = []int32{ 18, // 0: google.protobuf.FileDescriptorSet.file:type_name -> google.protobuf.FileDescriptorProto @@ -5179,40 +5338,46 @@ var file_google_protobuf_descriptor_proto_depIdxs = []int32{ 8, // 39: google.protobuf.FieldOptions.targets:type_name -> google.protobuf.FieldOptions.OptionTargetType 44, // 40: google.protobuf.FieldOptions.edition_defaults:type_name -> google.protobuf.FieldOptions.EditionDefault 36, // 41: google.protobuf.FieldOptions.features:type_name -> google.protobuf.FeatureSet - 35, // 42: google.protobuf.FieldOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption - 36, // 43: google.protobuf.OneofOptions.features:type_name -> google.protobuf.FeatureSet - 35, // 44: google.protobuf.OneofOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption - 36, // 45: google.protobuf.EnumOptions.features:type_name -> google.protobuf.FeatureSet - 35, // 46: google.protobuf.EnumOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption - 36, // 47: google.protobuf.EnumValueOptions.features:type_name -> google.protobuf.FeatureSet - 35, // 48: google.protobuf.EnumValueOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption - 36, // 49: google.protobuf.ServiceOptions.features:type_name -> google.protobuf.FeatureSet - 35, // 50: google.protobuf.ServiceOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption - 9, // 51: google.protobuf.MethodOptions.idempotency_level:type_name -> google.protobuf.MethodOptions.IdempotencyLevel - 36, // 52: google.protobuf.MethodOptions.features:type_name -> google.protobuf.FeatureSet - 35, // 53: google.protobuf.MethodOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption - 45, // 54: google.protobuf.UninterpretedOption.name:type_name -> google.protobuf.UninterpretedOption.NamePart - 10, // 55: google.protobuf.FeatureSet.field_presence:type_name -> google.protobuf.FeatureSet.FieldPresence - 11, // 56: google.protobuf.FeatureSet.enum_type:type_name -> google.protobuf.FeatureSet.EnumType - 12, // 57: google.protobuf.FeatureSet.repeated_field_encoding:type_name -> google.protobuf.FeatureSet.RepeatedFieldEncoding - 13, // 58: google.protobuf.FeatureSet.utf8_validation:type_name -> google.protobuf.FeatureSet.Utf8Validation - 14, // 59: google.protobuf.FeatureSet.message_encoding:type_name -> google.protobuf.FeatureSet.MessageEncoding - 15, // 60: google.protobuf.FeatureSet.json_format:type_name -> google.protobuf.FeatureSet.JsonFormat - 46, // 61: google.protobuf.FeatureSetDefaults.defaults:type_name -> google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault - 0, // 62: google.protobuf.FeatureSetDefaults.minimum_edition:type_name -> google.protobuf.Edition - 0, // 63: google.protobuf.FeatureSetDefaults.maximum_edition:type_name -> google.protobuf.Edition - 47, // 64: google.protobuf.SourceCodeInfo.location:type_name -> google.protobuf.SourceCodeInfo.Location - 48, // 65: google.protobuf.GeneratedCodeInfo.annotation:type_name -> google.protobuf.GeneratedCodeInfo.Annotation - 20, // 66: google.protobuf.DescriptorProto.ExtensionRange.options:type_name -> google.protobuf.ExtensionRangeOptions - 0, // 67: google.protobuf.FieldOptions.EditionDefault.edition:type_name -> google.protobuf.Edition - 0, // 68: google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.edition:type_name -> google.protobuf.Edition - 36, // 69: google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.features:type_name -> google.protobuf.FeatureSet - 16, // 70: google.protobuf.GeneratedCodeInfo.Annotation.semantic:type_name -> google.protobuf.GeneratedCodeInfo.Annotation.Semantic - 71, // [71:71] is the sub-list for method output_type - 71, // [71:71] is the sub-list for method input_type - 71, // [71:71] is the sub-list for extension type_name - 71, // [71:71] is the sub-list for extension extendee - 0, // [0:71] is the sub-list for field type_name + 45, // 42: google.protobuf.FieldOptions.feature_support:type_name -> google.protobuf.FieldOptions.FeatureSupport + 35, // 43: google.protobuf.FieldOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption + 36, // 44: google.protobuf.OneofOptions.features:type_name -> google.protobuf.FeatureSet + 35, // 45: google.protobuf.OneofOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption + 36, // 46: google.protobuf.EnumOptions.features:type_name -> google.protobuf.FeatureSet + 35, // 47: google.protobuf.EnumOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption + 36, // 48: google.protobuf.EnumValueOptions.features:type_name -> google.protobuf.FeatureSet + 45, // 49: google.protobuf.EnumValueOptions.feature_support:type_name -> google.protobuf.FieldOptions.FeatureSupport + 35, // 50: google.protobuf.EnumValueOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption + 36, // 51: google.protobuf.ServiceOptions.features:type_name -> google.protobuf.FeatureSet + 35, // 52: google.protobuf.ServiceOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption + 9, // 53: google.protobuf.MethodOptions.idempotency_level:type_name -> google.protobuf.MethodOptions.IdempotencyLevel + 36, // 54: google.protobuf.MethodOptions.features:type_name -> google.protobuf.FeatureSet + 35, // 55: google.protobuf.MethodOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption + 46, // 56: google.protobuf.UninterpretedOption.name:type_name -> google.protobuf.UninterpretedOption.NamePart + 10, // 57: google.protobuf.FeatureSet.field_presence:type_name -> google.protobuf.FeatureSet.FieldPresence + 11, // 58: google.protobuf.FeatureSet.enum_type:type_name -> google.protobuf.FeatureSet.EnumType + 12, // 59: google.protobuf.FeatureSet.repeated_field_encoding:type_name -> google.protobuf.FeatureSet.RepeatedFieldEncoding + 13, // 60: google.protobuf.FeatureSet.utf8_validation:type_name -> google.protobuf.FeatureSet.Utf8Validation + 14, // 61: google.protobuf.FeatureSet.message_encoding:type_name -> google.protobuf.FeatureSet.MessageEncoding + 15, // 62: google.protobuf.FeatureSet.json_format:type_name -> google.protobuf.FeatureSet.JsonFormat + 47, // 63: google.protobuf.FeatureSetDefaults.defaults:type_name -> google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault + 0, // 64: google.protobuf.FeatureSetDefaults.minimum_edition:type_name -> google.protobuf.Edition + 0, // 65: google.protobuf.FeatureSetDefaults.maximum_edition:type_name -> google.protobuf.Edition + 48, // 66: google.protobuf.SourceCodeInfo.location:type_name -> google.protobuf.SourceCodeInfo.Location + 49, // 67: google.protobuf.GeneratedCodeInfo.annotation:type_name -> google.protobuf.GeneratedCodeInfo.Annotation + 20, // 68: google.protobuf.DescriptorProto.ExtensionRange.options:type_name -> google.protobuf.ExtensionRangeOptions + 0, // 69: google.protobuf.FieldOptions.EditionDefault.edition:type_name -> google.protobuf.Edition + 0, // 70: google.protobuf.FieldOptions.FeatureSupport.edition_introduced:type_name -> google.protobuf.Edition + 0, // 71: google.protobuf.FieldOptions.FeatureSupport.edition_deprecated:type_name -> google.protobuf.Edition + 0, // 72: google.protobuf.FieldOptions.FeatureSupport.edition_removed:type_name -> google.protobuf.Edition + 0, // 73: google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.edition:type_name -> google.protobuf.Edition + 36, // 74: google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.overridable_features:type_name -> google.protobuf.FeatureSet + 36, // 75: google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.fixed_features:type_name -> google.protobuf.FeatureSet + 16, // 76: google.protobuf.GeneratedCodeInfo.Annotation.semantic:type_name -> google.protobuf.GeneratedCodeInfo.Annotation.Semantic + 77, // [77:77] is the sub-list for method output_type + 77, // [77:77] is the sub-list for method input_type + 77, // [77:77] is the sub-list for extension type_name + 77, // [77:77] is the sub-list for extension extendee + 0, // [0:77] is the sub-list for field type_name } func init() { file_google_protobuf_descriptor_proto_init() } @@ -5221,7 +5386,7 @@ func file_google_protobuf_descriptor_proto_init() { return } if !protoimpl.UnsafeEnabled { - file_google_protobuf_descriptor_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + file_google_protobuf_descriptor_proto_msgTypes[0].Exporter = func(v any, i int) any { switch v := v.(*FileDescriptorSet); i { case 0: return &v.state @@ -5233,7 +5398,7 @@ func file_google_protobuf_descriptor_proto_init() { return nil } } - file_google_protobuf_descriptor_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + file_google_protobuf_descriptor_proto_msgTypes[1].Exporter = func(v any, i int) any { switch v := v.(*FileDescriptorProto); i { case 0: return &v.state @@ -5245,7 +5410,7 @@ func file_google_protobuf_descriptor_proto_init() { return nil } } - file_google_protobuf_descriptor_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + file_google_protobuf_descriptor_proto_msgTypes[2].Exporter = func(v any, i int) any { switch v := v.(*DescriptorProto); i { case 0: return &v.state @@ -5257,7 +5422,7 @@ func file_google_protobuf_descriptor_proto_init() { return nil } } - file_google_protobuf_descriptor_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + file_google_protobuf_descriptor_proto_msgTypes[3].Exporter = func(v any, i int) any { switch v := v.(*ExtensionRangeOptions); i { case 0: return &v.state @@ -5271,7 +5436,7 @@ func file_google_protobuf_descriptor_proto_init() { return nil } } - file_google_protobuf_descriptor_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + file_google_protobuf_descriptor_proto_msgTypes[4].Exporter = func(v any, i int) any { switch v := v.(*FieldDescriptorProto); i { case 0: return &v.state @@ -5283,7 +5448,7 @@ func file_google_protobuf_descriptor_proto_init() { return nil } } - file_google_protobuf_descriptor_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + file_google_protobuf_descriptor_proto_msgTypes[5].Exporter = func(v any, i int) any { switch v := v.(*OneofDescriptorProto); i { case 0: return &v.state @@ -5295,7 +5460,7 @@ func file_google_protobuf_descriptor_proto_init() { return nil } } - file_google_protobuf_descriptor_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + file_google_protobuf_descriptor_proto_msgTypes[6].Exporter = func(v any, i int) any { switch v := v.(*EnumDescriptorProto); i { case 0: return &v.state @@ -5307,7 +5472,7 @@ func file_google_protobuf_descriptor_proto_init() { return nil } } - file_google_protobuf_descriptor_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + file_google_protobuf_descriptor_proto_msgTypes[7].Exporter = func(v any, i int) any { switch v := v.(*EnumValueDescriptorProto); i { case 0: return &v.state @@ -5319,7 +5484,7 @@ func file_google_protobuf_descriptor_proto_init() { return nil } } - file_google_protobuf_descriptor_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + file_google_protobuf_descriptor_proto_msgTypes[8].Exporter = func(v any, i int) any { switch v := v.(*ServiceDescriptorProto); i { case 0: return &v.state @@ -5331,7 +5496,7 @@ func file_google_protobuf_descriptor_proto_init() { return nil } } - file_google_protobuf_descriptor_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + file_google_protobuf_descriptor_proto_msgTypes[9].Exporter = func(v any, i int) any { switch v := v.(*MethodDescriptorProto); i { case 0: return &v.state @@ -5343,7 +5508,7 @@ func file_google_protobuf_descriptor_proto_init() { return nil } } - file_google_protobuf_descriptor_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + file_google_protobuf_descriptor_proto_msgTypes[10].Exporter = func(v any, i int) any { switch v := v.(*FileOptions); i { case 0: return &v.state @@ -5357,7 +5522,7 @@ func file_google_protobuf_descriptor_proto_init() { return nil } } - file_google_protobuf_descriptor_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + file_google_protobuf_descriptor_proto_msgTypes[11].Exporter = func(v any, i int) any { switch v := v.(*MessageOptions); i { case 0: return &v.state @@ -5371,7 +5536,7 @@ func file_google_protobuf_descriptor_proto_init() { return nil } } - file_google_protobuf_descriptor_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + file_google_protobuf_descriptor_proto_msgTypes[12].Exporter = func(v any, i int) any { switch v := v.(*FieldOptions); i { case 0: return &v.state @@ -5385,7 +5550,7 @@ func file_google_protobuf_descriptor_proto_init() { return nil } } - file_google_protobuf_descriptor_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + file_google_protobuf_descriptor_proto_msgTypes[13].Exporter = func(v any, i int) any { switch v := v.(*OneofOptions); i { case 0: return &v.state @@ -5399,7 +5564,7 @@ func file_google_protobuf_descriptor_proto_init() { return nil } } - file_google_protobuf_descriptor_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + file_google_protobuf_descriptor_proto_msgTypes[14].Exporter = func(v any, i int) any { switch v := v.(*EnumOptions); i { case 0: return &v.state @@ -5413,7 +5578,7 @@ func file_google_protobuf_descriptor_proto_init() { return nil } } - file_google_protobuf_descriptor_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + file_google_protobuf_descriptor_proto_msgTypes[15].Exporter = func(v any, i int) any { switch v := v.(*EnumValueOptions); i { case 0: return &v.state @@ -5427,7 +5592,7 @@ func file_google_protobuf_descriptor_proto_init() { return nil } } - file_google_protobuf_descriptor_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + file_google_protobuf_descriptor_proto_msgTypes[16].Exporter = func(v any, i int) any { switch v := v.(*ServiceOptions); i { case 0: return &v.state @@ -5441,7 +5606,7 @@ func file_google_protobuf_descriptor_proto_init() { return nil } } - file_google_protobuf_descriptor_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + file_google_protobuf_descriptor_proto_msgTypes[17].Exporter = func(v any, i int) any { switch v := v.(*MethodOptions); i { case 0: return &v.state @@ -5455,7 +5620,7 @@ func file_google_protobuf_descriptor_proto_init() { return nil } } - file_google_protobuf_descriptor_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + file_google_protobuf_descriptor_proto_msgTypes[18].Exporter = func(v any, i int) any { switch v := v.(*UninterpretedOption); i { case 0: return &v.state @@ -5467,7 +5632,7 @@ func file_google_protobuf_descriptor_proto_init() { return nil } } - file_google_protobuf_descriptor_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + file_google_protobuf_descriptor_proto_msgTypes[19].Exporter = func(v any, i int) any { switch v := v.(*FeatureSet); i { case 0: return &v.state @@ -5481,7 +5646,7 @@ func file_google_protobuf_descriptor_proto_init() { return nil } } - file_google_protobuf_descriptor_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + file_google_protobuf_descriptor_proto_msgTypes[20].Exporter = func(v any, i int) any { switch v := v.(*FeatureSetDefaults); i { case 0: return &v.state @@ -5493,7 +5658,7 @@ func file_google_protobuf_descriptor_proto_init() { return nil } } - file_google_protobuf_descriptor_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + file_google_protobuf_descriptor_proto_msgTypes[21].Exporter = func(v any, i int) any { switch v := v.(*SourceCodeInfo); i { case 0: return &v.state @@ -5505,7 +5670,7 @@ func file_google_protobuf_descriptor_proto_init() { return nil } } - file_google_protobuf_descriptor_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + file_google_protobuf_descriptor_proto_msgTypes[22].Exporter = func(v any, i int) any { switch v := v.(*GeneratedCodeInfo); i { case 0: return &v.state @@ -5517,7 +5682,7 @@ func file_google_protobuf_descriptor_proto_init() { return nil } } - file_google_protobuf_descriptor_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { + file_google_protobuf_descriptor_proto_msgTypes[23].Exporter = func(v any, i int) any { switch v := v.(*DescriptorProto_ExtensionRange); i { case 0: return &v.state @@ -5529,7 +5694,7 @@ func file_google_protobuf_descriptor_proto_init() { return nil } } - file_google_protobuf_descriptor_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { + file_google_protobuf_descriptor_proto_msgTypes[24].Exporter = func(v any, i int) any { switch v := v.(*DescriptorProto_ReservedRange); i { case 0: return &v.state @@ -5541,7 +5706,7 @@ func file_google_protobuf_descriptor_proto_init() { return nil } } - file_google_protobuf_descriptor_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { + file_google_protobuf_descriptor_proto_msgTypes[25].Exporter = func(v any, i int) any { switch v := v.(*ExtensionRangeOptions_Declaration); i { case 0: return &v.state @@ -5553,7 +5718,7 @@ func file_google_protobuf_descriptor_proto_init() { return nil } } - file_google_protobuf_descriptor_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { + file_google_protobuf_descriptor_proto_msgTypes[26].Exporter = func(v any, i int) any { switch v := v.(*EnumDescriptorProto_EnumReservedRange); i { case 0: return &v.state @@ -5565,7 +5730,7 @@ func file_google_protobuf_descriptor_proto_init() { return nil } } - file_google_protobuf_descriptor_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { + file_google_protobuf_descriptor_proto_msgTypes[27].Exporter = func(v any, i int) any { switch v := v.(*FieldOptions_EditionDefault); i { case 0: return &v.state @@ -5577,7 +5742,19 @@ func file_google_protobuf_descriptor_proto_init() { return nil } } - file_google_protobuf_descriptor_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { + file_google_protobuf_descriptor_proto_msgTypes[28].Exporter = func(v any, i int) any { + switch v := v.(*FieldOptions_FeatureSupport); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_protobuf_descriptor_proto_msgTypes[29].Exporter = func(v any, i int) any { switch v := v.(*UninterpretedOption_NamePart); i { case 0: return &v.state @@ -5589,7 +5766,7 @@ func file_google_protobuf_descriptor_proto_init() { return nil } } - file_google_protobuf_descriptor_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { + file_google_protobuf_descriptor_proto_msgTypes[30].Exporter = func(v any, i int) any { switch v := v.(*FeatureSetDefaults_FeatureSetEditionDefault); i { case 0: return &v.state @@ -5601,7 +5778,7 @@ func file_google_protobuf_descriptor_proto_init() { return nil } } - file_google_protobuf_descriptor_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { + file_google_protobuf_descriptor_proto_msgTypes[31].Exporter = func(v any, i int) any { switch v := v.(*SourceCodeInfo_Location); i { case 0: return &v.state @@ -5613,7 +5790,7 @@ func file_google_protobuf_descriptor_proto_init() { return nil } } - file_google_protobuf_descriptor_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { + file_google_protobuf_descriptor_proto_msgTypes[32].Exporter = func(v any, i int) any { switch v := v.(*GeneratedCodeInfo_Annotation); i { case 0: return &v.state @@ -5632,7 +5809,7 @@ func file_google_protobuf_descriptor_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_google_protobuf_descriptor_proto_rawDesc, NumEnums: 17, - NumMessages: 32, + NumMessages: 33, NumExtensions: 0, NumServices: 0, }, diff --git a/vendor/google.golang.org/protobuf/types/gofeaturespb/go_features.pb.go b/vendor/google.golang.org/protobuf/types/gofeaturespb/go_features.pb.go index 25de5ae00..a2ca940c5 100644 --- a/vendor/google.golang.org/protobuf/types/gofeaturespb/go_features.pb.go +++ b/vendor/google.golang.org/protobuf/types/gofeaturespb/go_features.pb.go @@ -6,9 +6,9 @@ // https://developers.google.com/open-source/licenses/bsd // Code generated by protoc-gen-go. DO NOT EDIT. -// source: reflect/protodesc/proto/go_features.proto +// source: google/protobuf/go_features.proto -package proto +package gofeaturespb import ( protoreflect "google.golang.org/protobuf/reflect/protoreflect" @@ -30,7 +30,7 @@ type GoFeatures struct { func (x *GoFeatures) Reset() { *x = GoFeatures{} if protoimpl.UnsafeEnabled { - mi := &file_reflect_protodesc_proto_go_features_proto_msgTypes[0] + mi := &file_google_protobuf_go_features_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -43,7 +43,7 @@ func (x *GoFeatures) String() string { func (*GoFeatures) ProtoMessage() {} func (x *GoFeatures) ProtoReflect() protoreflect.Message { - mi := &file_reflect_protodesc_proto_go_features_proto_msgTypes[0] + mi := &file_google_protobuf_go_features_proto_msgTypes[0] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -56,7 +56,7 @@ func (x *GoFeatures) ProtoReflect() protoreflect.Message { // Deprecated: Use GoFeatures.ProtoReflect.Descriptor instead. func (*GoFeatures) Descriptor() ([]byte, []int) { - return file_reflect_protodesc_proto_go_features_proto_rawDescGZIP(), []int{0} + return file_google_protobuf_go_features_proto_rawDescGZIP(), []int{0} } func (x *GoFeatures) GetLegacyUnmarshalJsonEnum() bool { @@ -66,69 +66,73 @@ func (x *GoFeatures) GetLegacyUnmarshalJsonEnum() bool { return false } -var file_reflect_protodesc_proto_go_features_proto_extTypes = []protoimpl.ExtensionInfo{ +var file_google_protobuf_go_features_proto_extTypes = []protoimpl.ExtensionInfo{ { ExtendedType: (*descriptorpb.FeatureSet)(nil), ExtensionType: (*GoFeatures)(nil), Field: 1002, - Name: "google.protobuf.go", + Name: "pb.go", Tag: "bytes,1002,opt,name=go", - Filename: "reflect/protodesc/proto/go_features.proto", + Filename: "google/protobuf/go_features.proto", }, } // Extension fields to descriptorpb.FeatureSet. var ( - // optional google.protobuf.GoFeatures go = 1002; - E_Go = &file_reflect_protodesc_proto_go_features_proto_extTypes[0] + // optional pb.GoFeatures go = 1002; + E_Go = &file_google_protobuf_go_features_proto_extTypes[0] ) -var File_reflect_protodesc_proto_go_features_proto protoreflect.FileDescriptor - -var file_reflect_protodesc_proto_go_features_proto_rawDesc = []byte{ - 0x0a, 0x29, 0x72, 0x65, 0x66, 0x6c, 0x65, 0x63, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x64, - 0x65, 0x73, 0x63, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x5f, 0x66, 0x65, 0x61, - 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0f, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x1a, 0x20, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x65, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x6a, - 0x0a, 0x0a, 0x47, 0x6f, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x5c, 0x0a, 0x1a, - 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x5f, 0x75, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, - 0x5f, 0x6a, 0x73, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, - 0x42, 0x1f, 0x88, 0x01, 0x01, 0x98, 0x01, 0x06, 0xa2, 0x01, 0x09, 0x12, 0x04, 0x74, 0x72, 0x75, - 0x65, 0x18, 0xe6, 0x07, 0xa2, 0x01, 0x0a, 0x12, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x18, 0xe7, - 0x07, 0x52, 0x17, 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, - 0x61, 0x6c, 0x4a, 0x73, 0x6f, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x3a, 0x49, 0x0a, 0x02, 0x67, 0x6f, - 0x12, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x18, 0xea, 0x07, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x47, 0x6f, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, - 0x73, 0x52, 0x02, 0x67, 0x6f, 0x42, 0x34, 0x5a, 0x32, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2f, 0x72, 0x65, 0x66, 0x6c, 0x65, 0x63, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x64, 0x65, 0x73, 0x63, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, +var File_google_protobuf_go_features_proto protoreflect.FileDescriptor + +var file_google_protobuf_go_features_proto_rawDesc = []byte{ + 0x0a, 0x21, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2f, 0x67, 0x6f, 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x12, 0x02, 0x70, 0x62, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xcd, 0x01, 0x0a, 0x0a, 0x47, 0x6f, + 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0xbe, 0x01, 0x0a, 0x1a, 0x6c, 0x65, 0x67, + 0x61, 0x63, 0x79, 0x5f, 0x75, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x5f, 0x6a, 0x73, + 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x80, 0x01, + 0x88, 0x01, 0x01, 0x98, 0x01, 0x06, 0x98, 0x01, 0x01, 0xa2, 0x01, 0x09, 0x12, 0x04, 0x74, 0x72, + 0x75, 0x65, 0x18, 0x84, 0x07, 0xa2, 0x01, 0x0a, 0x12, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x18, + 0xe7, 0x07, 0xb2, 0x01, 0x5b, 0x08, 0xe8, 0x07, 0x10, 0xe8, 0x07, 0x1a, 0x53, 0x54, 0x68, 0x65, + 0x20, 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x20, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, + 0x6c, 0x4a, 0x53, 0x4f, 0x4e, 0x20, 0x41, 0x50, 0x49, 0x20, 0x69, 0x73, 0x20, 0x64, 0x65, 0x70, + 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x77, 0x69, 0x6c, 0x6c, + 0x20, 0x62, 0x65, 0x20, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x20, 0x61, + 0x20, 0x66, 0x75, 0x74, 0x75, 0x72, 0x65, 0x20, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, + 0x52, 0x17, 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, + 0x6c, 0x4a, 0x73, 0x6f, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x3a, 0x3c, 0x0a, 0x02, 0x67, 0x6f, 0x12, + 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x18, 0xea, 0x07, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x6f, 0x46, 0x65, 0x61, 0x74, 0x75, + 0x72, 0x65, 0x73, 0x52, 0x02, 0x67, 0x6f, 0x42, 0x2f, 0x5a, 0x2d, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x67, 0x6f, 0x66, 0x65, + 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x70, 0x62, } var ( - file_reflect_protodesc_proto_go_features_proto_rawDescOnce sync.Once - file_reflect_protodesc_proto_go_features_proto_rawDescData = file_reflect_protodesc_proto_go_features_proto_rawDesc + file_google_protobuf_go_features_proto_rawDescOnce sync.Once + file_google_protobuf_go_features_proto_rawDescData = file_google_protobuf_go_features_proto_rawDesc ) -func file_reflect_protodesc_proto_go_features_proto_rawDescGZIP() []byte { - file_reflect_protodesc_proto_go_features_proto_rawDescOnce.Do(func() { - file_reflect_protodesc_proto_go_features_proto_rawDescData = protoimpl.X.CompressGZIP(file_reflect_protodesc_proto_go_features_proto_rawDescData) +func file_google_protobuf_go_features_proto_rawDescGZIP() []byte { + file_google_protobuf_go_features_proto_rawDescOnce.Do(func() { + file_google_protobuf_go_features_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_protobuf_go_features_proto_rawDescData) }) - return file_reflect_protodesc_proto_go_features_proto_rawDescData + return file_google_protobuf_go_features_proto_rawDescData } -var file_reflect_protodesc_proto_go_features_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_reflect_protodesc_proto_go_features_proto_goTypes = []interface{}{ - (*GoFeatures)(nil), // 0: google.protobuf.GoFeatures +var file_google_protobuf_go_features_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_google_protobuf_go_features_proto_goTypes = []any{ + (*GoFeatures)(nil), // 0: pb.GoFeatures (*descriptorpb.FeatureSet)(nil), // 1: google.protobuf.FeatureSet } -var file_reflect_protodesc_proto_go_features_proto_depIdxs = []int32{ - 1, // 0: google.protobuf.go:extendee -> google.protobuf.FeatureSet - 0, // 1: google.protobuf.go:type_name -> google.protobuf.GoFeatures +var file_google_protobuf_go_features_proto_depIdxs = []int32{ + 1, // 0: pb.go:extendee -> google.protobuf.FeatureSet + 0, // 1: pb.go:type_name -> pb.GoFeatures 2, // [2:2] is the sub-list for method output_type 2, // [2:2] is the sub-list for method input_type 1, // [1:2] is the sub-list for extension type_name @@ -136,13 +140,13 @@ var file_reflect_protodesc_proto_go_features_proto_depIdxs = []int32{ 0, // [0:0] is the sub-list for field type_name } -func init() { file_reflect_protodesc_proto_go_features_proto_init() } -func file_reflect_protodesc_proto_go_features_proto_init() { - if File_reflect_protodesc_proto_go_features_proto != nil { +func init() { file_google_protobuf_go_features_proto_init() } +func file_google_protobuf_go_features_proto_init() { + if File_google_protobuf_go_features_proto != nil { return } if !protoimpl.UnsafeEnabled { - file_reflect_protodesc_proto_go_features_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + file_google_protobuf_go_features_proto_msgTypes[0].Exporter = func(v any, i int) any { switch v := v.(*GoFeatures); i { case 0: return &v.state @@ -159,19 +163,19 @@ func file_reflect_protodesc_proto_go_features_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_reflect_protodesc_proto_go_features_proto_rawDesc, + RawDescriptor: file_google_protobuf_go_features_proto_rawDesc, NumEnums: 0, NumMessages: 1, NumExtensions: 1, NumServices: 0, }, - GoTypes: file_reflect_protodesc_proto_go_features_proto_goTypes, - DependencyIndexes: file_reflect_protodesc_proto_go_features_proto_depIdxs, - MessageInfos: file_reflect_protodesc_proto_go_features_proto_msgTypes, - ExtensionInfos: file_reflect_protodesc_proto_go_features_proto_extTypes, + GoTypes: file_google_protobuf_go_features_proto_goTypes, + DependencyIndexes: file_google_protobuf_go_features_proto_depIdxs, + MessageInfos: file_google_protobuf_go_features_proto_msgTypes, + ExtensionInfos: file_google_protobuf_go_features_proto_extTypes, }.Build() - File_reflect_protodesc_proto_go_features_proto = out.File - file_reflect_protodesc_proto_go_features_proto_rawDesc = nil - file_reflect_protodesc_proto_go_features_proto_goTypes = nil - file_reflect_protodesc_proto_go_features_proto_depIdxs = nil + File_google_protobuf_go_features_proto = out.File + file_google_protobuf_go_features_proto_rawDesc = nil + file_google_protobuf_go_features_proto_goTypes = nil + file_google_protobuf_go_features_proto_depIdxs = nil } diff --git a/vendor/google.golang.org/protobuf/types/gofeaturespb/go_features.proto b/vendor/google.golang.org/protobuf/types/gofeaturespb/go_features.proto deleted file mode 100644 index d24657129..000000000 --- a/vendor/google.golang.org/protobuf/types/gofeaturespb/go_features.proto +++ /dev/null @@ -1,28 +0,0 @@ -// Protocol Buffers - Google's data interchange format -// Copyright 2023 Google Inc. All rights reserved. -// -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file or at -// https://developers.google.com/open-source/licenses/bsd - -syntax = "proto2"; - -package google.protobuf; - -import "google/protobuf/descriptor.proto"; - -option go_package = "google.golang.org/protobuf/types/gofeaturespb"; - -extend google.protobuf.FeatureSet { - optional GoFeatures go = 1002; -} - -message GoFeatures { - // Whether or not to generate the deprecated UnmarshalJSON method for enums. - optional bool legacy_unmarshal_json_enum = 1 [ - retention = RETENTION_RUNTIME, - targets = TARGET_TYPE_ENUM, - edition_defaults = { edition: EDITION_PROTO2, value: "true" }, - edition_defaults = { edition: EDITION_PROTO3, value: "false" } - ]; -} diff --git a/vendor/google.golang.org/protobuf/types/known/anypb/any.pb.go b/vendor/google.golang.org/protobuf/types/known/anypb/any.pb.go index 9de51be54..7172b43d3 100644 --- a/vendor/google.golang.org/protobuf/types/known/anypb/any.pb.go +++ b/vendor/google.golang.org/protobuf/types/known/anypb/any.pb.go @@ -445,7 +445,7 @@ func file_google_protobuf_any_proto_rawDescGZIP() []byte { } var file_google_protobuf_any_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_google_protobuf_any_proto_goTypes = []interface{}{ +var file_google_protobuf_any_proto_goTypes = []any{ (*Any)(nil), // 0: google.protobuf.Any } var file_google_protobuf_any_proto_depIdxs = []int32{ @@ -462,7 +462,7 @@ func file_google_protobuf_any_proto_init() { return } if !protoimpl.UnsafeEnabled { - file_google_protobuf_any_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + file_google_protobuf_any_proto_msgTypes[0].Exporter = func(v any, i int) any { switch v := v.(*Any); i { case 0: return &v.state diff --git a/vendor/google.golang.org/protobuf/types/known/durationpb/duration.pb.go b/vendor/google.golang.org/protobuf/types/known/durationpb/duration.pb.go index df709a8dd..1b71bcd91 100644 --- a/vendor/google.golang.org/protobuf/types/known/durationpb/duration.pb.go +++ b/vendor/google.golang.org/protobuf/types/known/durationpb/duration.pb.go @@ -323,7 +323,7 @@ func file_google_protobuf_duration_proto_rawDescGZIP() []byte { } var file_google_protobuf_duration_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_google_protobuf_duration_proto_goTypes = []interface{}{ +var file_google_protobuf_duration_proto_goTypes = []any{ (*Duration)(nil), // 0: google.protobuf.Duration } var file_google_protobuf_duration_proto_depIdxs = []int32{ @@ -340,7 +340,7 @@ func file_google_protobuf_duration_proto_init() { return } if !protoimpl.UnsafeEnabled { - file_google_protobuf_duration_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + file_google_protobuf_duration_proto_msgTypes[0].Exporter = func(v any, i int) any { switch v := v.(*Duration); i { case 0: return &v.state diff --git a/vendor/google.golang.org/protobuf/types/known/timestamppb/timestamp.pb.go b/vendor/google.golang.org/protobuf/types/known/timestamppb/timestamp.pb.go index 81511a336..83a5a645b 100644 --- a/vendor/google.golang.org/protobuf/types/known/timestamppb/timestamp.pb.go +++ b/vendor/google.golang.org/protobuf/types/known/timestamppb/timestamp.pb.go @@ -332,7 +332,7 @@ func file_google_protobuf_timestamp_proto_rawDescGZIP() []byte { } var file_google_protobuf_timestamp_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_google_protobuf_timestamp_proto_goTypes = []interface{}{ +var file_google_protobuf_timestamp_proto_goTypes = []any{ (*Timestamp)(nil), // 0: google.protobuf.Timestamp } var file_google_protobuf_timestamp_proto_depIdxs = []int32{ @@ -349,7 +349,7 @@ func file_google_protobuf_timestamp_proto_init() { return } if !protoimpl.UnsafeEnabled { - file_google_protobuf_timestamp_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + file_google_protobuf_timestamp_proto_msgTypes[0].Exporter = func(v any, i int) any { switch v := v.(*Timestamp); i { case 0: return &v.state diff --git a/vendor/modules.txt b/vendor/modules.txt index 800625764..2f6545bd8 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -1,5 +1,5 @@ -# github.com/IBM/ibm-storage-odf-operator v1.4.1 -## explicit; go 1.18 +# github.com/IBM/ibm-storage-odf-operator v1.5.0 +## explicit; go 1.20 github.com/IBM/ibm-storage-odf-operator/api/v1alpha1 # github.com/beorn7/perks v1.0.1 ## explicit; go 1.11 @@ -317,13 +317,13 @@ go.uber.org/zap/internal/exit go.uber.org/zap/internal/pool go.uber.org/zap/internal/stacktrace go.uber.org/zap/zapcore -# golang.org/x/crypto v0.21.0 +# golang.org/x/crypto v0.24.0 ## explicit; go 1.18 golang.org/x/crypto/pbkdf2 # golang.org/x/exp v0.0.0-20231127185646-65229373498e ## explicit; go 1.20 golang.org/x/exp/maps -# golang.org/x/net v0.22.0 +# golang.org/x/net v0.26.0 ## explicit; go 1.18 golang.org/x/net/context golang.org/x/net/html @@ -337,15 +337,15 @@ golang.org/x/net/idna ## explicit; go 1.18 golang.org/x/oauth2 golang.org/x/oauth2/internal -# golang.org/x/sys v0.18.0 +# golang.org/x/sys v0.21.0 ## explicit; go 1.18 golang.org/x/sys/plan9 golang.org/x/sys/unix golang.org/x/sys/windows -# golang.org/x/term v0.18.0 +# golang.org/x/term v0.21.0 ## explicit; go 1.18 golang.org/x/term -# golang.org/x/text v0.14.0 +# golang.org/x/text v0.16.0 ## explicit; go 1.18 golang.org/x/text/encoding golang.org/x/text/encoding/charmap @@ -370,8 +370,8 @@ golang.org/x/text/unicode/norm # golang.org/x/time v0.5.0 ## explicit; go 1.18 golang.org/x/time/rate -# golang.org/x/tools v0.18.0 -## explicit; go 1.18 +# golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d +## explicit; go 1.19 golang.org/x/tools/go/ast/inspector # gomodules.xyz/jsonpatch/v2 v2.4.0 ## explicit; go 1.20 @@ -385,8 +385,8 @@ google.golang.org/appengine/internal/log google.golang.org/appengine/internal/remote_api google.golang.org/appengine/internal/urlfetch google.golang.org/appengine/urlfetch -# google.golang.org/protobuf v1.33.0 -## explicit; go 1.17 +# google.golang.org/protobuf v1.34.2 +## explicit; go 1.20 google.golang.org/protobuf/encoding/protodelim google.golang.org/protobuf/encoding/prototext google.golang.org/protobuf/encoding/protowire @@ -394,6 +394,7 @@ google.golang.org/protobuf/internal/descfmt google.golang.org/protobuf/internal/descopts google.golang.org/protobuf/internal/detrand google.golang.org/protobuf/internal/editiondefaults +google.golang.org/protobuf/internal/editionssupport google.golang.org/protobuf/internal/encoding/defval google.golang.org/protobuf/internal/encoding/messageset google.golang.org/protobuf/internal/encoding/tag